第二章:
第一节:
5、下列关于数据成员的描述中,错误的是_____
A、数据成员的的类型只能是基本数据类型
B、数据成员用于保存数据
C、类中的数据成员之间不能重名
D、类的数据成员也被称作属性
7、对于类中定义的成员,其隐含访问权限为_____
A、protected
B、public
C、static
D、private
10、____是不可以作为该类的数据成员的。
A、另一个类的对象
B、自身类对象的引用
C、自身类的对象
D、自身类对象的指针
第二节:
5、类和对象实现面向对象程序设计的▁▁▁▁▁和▁▁▁▁▁特性。
答案:ADC 封装和抽象
第三章:
第一节:
5、已定义类ABC_____。
class ABC {
private:
int x, y;
public:
ABC(int a, int b) {
x = a;
y = b;
}
};
则下列定义对象语句中,错误的是_____。
A、ABC obj;
B、ABC obj(5, 10);
C、ABC *pobj = new ABC(5, 10);
D、ABC obj(5, 5+5);
第二节:
3、一个类可包含析构函数的个数是_____。
A、至少一个
B、0个或多个
C、1个
D、多个
7、关于new运算符的下列描述中,_____是错误的
A、使用它创建对象时要调用构造函数
B、使用它创建的对象或对象数组必须使用运算符delete删除
C、使用它创建对象数组时必须指定初始值
D、它可以用来动态创建对象和对象数组
第三节:
5、请根据要求把程序补充完整
#include <iostream>
using namespace std;
class A {
int a,b;
public:
A(int x=0,int y=0) {
a=x;
b=y;
}
A( ▁▁▁▁▁ ) {// 完成拷贝功能的构造函数
a=t.a; // 第一个成员等于参数的第一个成员
b=t.a+t.b▁▁▁▁▁; // 第二个成员等于参数的两个成员之和
}
void Set(int,int);
void Print( );
};
void A::Set(intx,inty) {
a=x;
b=y;
}
void A::Print( ) {
cout<<a<<'\t'<<b<<'\n';
}
第四节:
1、Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是▁▁▁▁▁。 Sample a[2], *q, *p = new Sample;
答案:ACC constA&t b=t.a+t.b 3次
第四、五章:
第一节:
4、下列关于静态成员的描述中,错误的是_____。
A、静态数据成员不属于某个对象,是类的共享成员
B、私有静态成员具有块作用域
C、静态数据成员要在类外定义和初始化
D、公有静态成员具有文件作用域
5、在类中声明一个常函数成员fun,下列_____语句是正确的
A、void fun( ) const;
B、void fun( );
C、const void fun( );
D、void const fun( );
6、下列静态数据成员的特性中,_____是错误的
A、静态数据成员在类体外进行初始化
B、静态数据成员初始化时,要在静态数据成员名前加类名和作用域运算符
C、静态数据成员不是所有对象所共享的成员
D、说明静态数据成员时前边要加关键字static来修饰
8、下面有关静态成员函数的描述中,正确的是_____。
A、在建立对象前,就可以为静态数据成员赋值
B、静态成员函数在类外定义是,要用static前缀
C、静态成员函数只能在类外定义
D、在静态成员函数中可以使用this指针
第二节:
1、下面有关友元函数的描述中,正确的说法是_____。
A、在类的外部定义友元函数时必须加上friend关键字
B、一个友元函数不可以同时定义为两个类的友元函数
C、友元函数是独立于当前类的外部函数
D、友元是本类的成员函数
5、如果在主函数main()中有函数调用Point::func();则函数func()是类Point的_____。
A、私有静态成员函数
B、公有静态成员函数
C、公有非静态成员函数
D、友元函数
第三节:
9、通过运算符重载,可以定义新的运算符。错
第四节:
4、下列程序的运行结果为▁▁▁▁▁
#include <iostream>
#include <cstring>
using namespace std;
class Toy {
char name[10];
static int count;
public:
Toy(char* _n) {
strcpy(name, _n);
count++;
}
~Toy( ) {
count--;
}
char* GetName( ) {
return name;
}
static int getCount( ) {
return count;
}
};
int Toy::count=0;
int main( ) {
Toy t1("Snoopy"), t2("Mickey"), t3("Barbie");
cout<<t1.getCount( )<<endl;
return 0;
}
5、下列程序的运行结果为▁▁▁▁▁,12行对公有静态数据成员的调用obj.a,可改写为▁▁▁▁▁
#include<iostream>
using namespace std;
class A{
public:
static int a;
void init(){a=1;}
A(int a=2){init();a++;}
};
int A::a=0;
A obj;
int main(){
cout<<obj.a;
return 0;
}
第五节:
答案:BACACB 3 1 A::a
第六章:
第一节:
2、下列关于派生类的叙述中,错误的是_____。
A、基类成员被派生类继承以后访问权限保持不变
B、派生类至少要有一个基类
C、派生类中包括了从基类继承的成员
D、一个派生类可以作为另一个派生类的基类
3、下列关于派生类和基类的描述中,正确的是_____。
A、派生类对基类的默认继承方式是公有继承
B、派生类成员函数可以访问基类的所有成员
C、派生类成员函数只能访问基类的公有和保护成员
D、派生类成员函数只能访问基类的公有成员
4、下列关于虚基类的描述中,错误的是___b__。
A、使用虚基类可以消除由多继承产生的二义性
B、声明"class B : virtual public A"说明类B为虚基类
C、建立派生类对象时,首先调用虚基类的构造函数
D、构造派生类对象时,虚基类的构造函数只被调用一次
8、在面向对象程序设计中,实现信息隐蔽是靠_____。
A、对象的继承
B、对象的间接访问
C、对象的分类
D、对象的封装
答案:ACAD
第二节:
2、请按下面注释的提示,在横线处填入适当的内容将类B的构造函数定义补充完整。
class A {
int a;
public:
A(int aa=0) {
a=aa;
}
};
class B: public A {
int b;
A c;
public:
//用aa初始化基类A,用aa+1初始化类对象成员c?
B(int aa):▁▁▁▁▁ { b=aa+2; }
};
3、下列程序的输出结果是▁▁▁▁▁
#include <iostream>
using namespace std;
class Base {
public:
void print ( ) {
cout << "Base";
}
};
class Derived : public Base {
public:
void print ( ) {
cout << "Deri";
}
};
int main( ) {
Derived * pd = new Derived( );
Base * pb = pd;
pb->print( );
pd->print( );
delete pd;
return 0;
}
4、有如下类声明,则类MyDERIVED中受保护的成员的个数是▁▁▁▁▁。
class MyBASE {
private:
int k;
protected:
int x;
public:
void set(int m,int n) {
k=m;
x=n;
}
int get( )const {
return k;
}
};
class MyDERIVED: protected MyBASE {
protected:
int j;
public:
void set(int m, int n,int p) {
MyBASE::set(m,n);
j=p;
}
int get( ) const {
return MyBASE::get( )+j;
}
};
7、下列程序的输出结果是▁▁▁▁▁
#include <iostream>
using namespace std;
class A {
protected:
int n;
public:
A(int x=5) {
n=++x;
}
void show() {
cout<<"A::" <<n;
}
};
class B:public A {
protected:
int n;
public:
B(int x=3) {
n=x*x;
}
void show() {
cout<<"B::" <<n;
}
};
int main() {
B b;
A *p=&b;
p->show();
return 0;
}
答案:A(aa),C(aa+1) BaseDeri 4 A::6
第三节:
1、假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,构造函数和析构函数的执行次序分别为_____。
A、X, Y, Y, X
B、X, Y, X, Y
C、Y, X, X, Y
D、Y, X, Y, X
2、多重继承的构造顺序可分为如下四步,这四个步骤的正确顺序是_____。 (1)所有非虚基类的构造函数按照他们被继承的顺序构造 (2)所有虚基类的构造函数按照他们被继承的顺序构造 (3)所有子对象的构造函数按照他们被继承的顺序构造 (4)派生类自己的构造函数体
A、(2)(4)(3)(1)
B、(4)(3)(2)(1)
C、(2)(1)(3)(4)
D、(3)(4)(1)(2)
5、对于下面的类:
class X {
int a;
public:
X(int x=0) {
a=x;
}
};
class Y: public X {
int b;
public:
Y(int x=0,int y=0): X(y) {
b=x;
}
};
下列语句组中出现语法错误的是____。
A、X *pa=new Y(1,2);
B、Y b1(2,3); X &pa1=b1;
C、Y b1(2,3); X *pa1=&b1;
D、X a2(10); Y b2=a2;
6、以下有关继承的叙述不正确的是____。
A、继承可以实现软件复用
B、虚基类可以解决多继承产生的二义性问题
C、派生类不继承基类的私有成员
D、派生类的构造函数要调用基类的构造函数
答案:ACDC
第四节:
第七章:
第一节:
1、下列哪种C++语法形式不属于多态__d___。
A、对象多态
B、重载运算符
C、重载函数
D、不同函数中定义的同名局部变量
5、关于基类中的虚函数与一般成员函数,正确的是_____。
A、虚函数只能定义一个,而一般成员函数可以多个
B、虚函数与一般成员函数在基类中没什么区别
C、虚函数不能定义函数体,而一般成员函数可以
D、虚函数不能被调用,而一般成员函数可以
7、对虚函数的调用_____。
A、一定使用动态联编
B、必须使用动态联编
C、一定使用静态联编
D、不一定使用动态联编
8、对虚函数使用基类指针或引用,系统使用_____,对虚函数使用对象名调用时,系统使用_____联编。
A、静态联编、静态联编
B、动态联编、动态联编
C、静态联编、动态联编
D、动态联编、静态联编
第三节:
2、对于如下类定义,以下正确的叙述是_____。
class A{
public:
virtual void funcl(){}
void func2(){}
};
class B:public A{
public:
void func1(){cout<<"class Bfunc1"<<endl;}
virtual void func2(){cout<<"class B func2"<<endl;}
};
A、B::func1()是虚函数,A::func2()不是虚函数
B、A::func2()和B::func1()都不是虚函数
C、B::func1()不是虚函数,A::func2()是虚函数
D、A::func2()和B::func1()都是虚函数
8、根据以下要求,填写程序代码使程序能够运行(注:所有标点符号均为英文状态,且符号间无空格) (1)▁▁▁▁▁ 填写完程序后,执行该程序的运行结果为▁▁▁▁▁
#include <iostream>
using namespace std;
class Point {
double x,y;
public:
Point(double X,double Y) {
x=X;y=Y;
}
double Area()const{
return 0.0;
}
};
class Rectangle:public Point {
double w,h;
public:
Rectangle(double X,double Y,double W,double H);//类内声明
double Area()const{
return w*h;
}
};
//类外定义Rectangle类的构造函数
//使用参数初始化列表,实现形参X和Y初始化基类数据成员,W和H初始化派生类新增数据成员
__(1)___{ }
void fun(Point &s){
cout<<"Area="<<s.Area();
}
int main( ) {
Rectangle rec(3.0,5.0,15.0,25.0);
fun(rec);// A
return 0;
}
9、若将第8题中,fun函数头部改为fun(Point *p),则其函数体内的语句因改写为▁▁▁▁▁ 此时,主函数中对fun函数的调用的语句因改写为▁▁▁▁▁
答案:BBDDD
8、Rectangle::Rectangle(double X, double Y, double W, double H) : Point(X, Y), w(W), h(H) Area=0 9、cout<<"Area="<<p->Area(); fun(&rec);