当前位置:首页 > C 复习题库
class DERIVED:public BASE{ char c; public: DERIVED(char n):BASE(n+1),c(n){} ~DERIVED(){cout<c}; int main() { DERIVED(\ return 0; }执行上面的程序将输出(A) A)XY B)YX C)X D)Y (10)在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是(B) A)fail B)eof C)bad D)good 一:选择题 1-5 :B B C C C 6-10:D B C A B
1、下列有关类的说法不正确的是( C )。
A. 对象是类的一个实例
B. 任何一个对象只能属于一个具体的类 C. 一个类只能有一个对象 D. 类与对象的关系和数据类型与变量的关系相似 答案:C
分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
2、下面( B )项是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X() B.X::X(参数), X::~X()
C.X::X(参数), X::~X(参数)
D.void X::X(参数), void X::~X(参数) 答案:B
分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。 3、( C )的功能是对象进行初始化。
A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数 答案:C
分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;
4、下列表达方式正确的是( D )。
A.class P{ B. class P{
public: public: int x=15; int x;
void show(){cout< C. class P{ D. class P{ int f; public: }; int a; f=25; void Seta (int x) {a=x;}; 答案:D 分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。 5、 拷贝构造函数具有的下列特点中,( D )是错误的。 A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的 B. 拷贝构造函数只有一个参数,并且是该类对象的引用 C. 拷贝构造函数是一种成员函数 D. 拷贝构造函数的名字不能用类名 答案:D 分析:如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的;拷贝构造函数只有一个参数,并且是该类对象的引用;拷贝构造函数的名字与类同名,并且不被指定返回类型;拷贝构造函数是一种成员函数。 6、关于静态成员的描述中,( B )是错误的。 A. 静态成员可分为静态数据成员和静态成员函数 B.静态数据成员定义后必须在类体内进行初始化 C.静态数据成员初始化不使用其构造函数 D.静态数据成员函数中不能直接引用非静态成员 答案:B 分析:静态成员可分为静态数据成员和静态成员函数;静态数据成员被定义后,必须对它进行初始化,初始化在类体外进行,一般放在该类的实现部分最合适,也可以放在其他位置,例如,放在主函数前面等;静态数据成员初始化与该类的构造函数和析构函数无关;在静态成员函数的实现中,可以直接引用静态成员,但不能直接引用非静态成员。 7:关于友元的描述中,( A )是错误的。 A. 友元函数是成员函数,它被说明在类体内 B. 友元函数可直接访问类中的私有成员 C. 友元函数破坏封装性,使用时尽量少用 D. 友元类中的所有成员函数都是友元函数 答案:A 8、;对类的构造函数和析构函数描述正确的是(A)。 A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载 答案:A 9、类的析构函数的作用是( D )。 A.一般成员函数 B.类的初始化 C.对象初始化 D.删除对象 答案:D 10、假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为( C )。 A.OneClass(OneClass p); B. OneClass& (OneClass p); C. OneClass(OneClass & p); D. OneClass (OneClass *p); 答案:C 11、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为( A )。 A.public B. protected C.private D. static 答案:A 12、下面对静态数据成员的描述中,正确的是( B )。 A.静态数据成员可以在类体内进行初始化 B.静态数据成员不可以在类体内进行初始化 C.静态数据成员不能受private控制符的作用 D.静态数据成员可以直接用类名调用 答案:B 13、下面对静态数据成员的描述中,正确的是(A )。 A.静态数据成员是类的所有对象共享的数据 B.类的每一个对象都有自己的静态数据成员 C.类的不同对象有不同的静态数据成员值 D.静态数据成员不能通过类的对象调用 答案:A C++试题1 (1) 已知下列语句中的x和y都是int型变量,其中不正确的语句是D A) y+=++x; B) ++x+=y; C) y=x++; D) x++=y; (2) 若x是一个bool型变量,y是一个值为100的int型变量,则表达式 !x && y>0 的值[ D ]。 A) 为true B) 为false C) 与x的值相同 D) 与x的值相反 (3) 执行语句序列 int n; cin>>n; switch(n){ case 1: case 2: cout<<'X'; case 3: case 4: cout<<'Y'; break; default:cout<<'Z'; } 时,不可能出现的情况是[ ]。 A) 显示:X B) 显示:Y C) 显示:Z D) 显示:XY (4) 执行语句序列 int x; cin>>x; if(x>250) cout<<'X'; if(x<250) cout<<'Y'; else cout<<'X'; 时,不可能出现的情况是[ ]。 A) 显示:X B) 显示:Y C) 显示:XY D) 显示:XX (5) 要定义一个具有5个元素的一维数组,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中不正确的是[ ]。 A) int vect[]={30,50,-88}; B) int vect[]={30,50,-88,0,0}; C) int vect[5]={30,50,-88}; D) int vect[5]={30,50,-88,0,0}; (6) 已知某应用系统中已经定义了函数fun,其原形是 int fun(char='A'); 则下列函数中,可以在同一系统中加以重载的是[ ]。 A) int fun(); B) int fun(char); C) int fun(char,int); D) int fun(char,double=0.0); (7) 若指针p定义为 const char *p=\则[ ]。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。 C) p本身不可改变,p在定义时可以不初始化。 D) p本身不可改变,p在定义时必须初始化。 (8) 已知数组A和指针p定义为:int A[20][10],*p;,要使p指向A的首元素,正确的赋值表达式是[ ]。 A) p=&A 或 p=A[0][0] B) p=A 或 p=&A[0][0] C) p=&A[0] 或 p=A[0][0] D) p=A[0] 或 p=&A[0][0] (9) 已知函数func的原形是 double func(doouble *pd,int &ri); 变量x和y的定义是 double x; int y; 把x和y分别作为第一参数和第二参数来调用函数func,正确的调用语句是[ ]。 A) func(x,&y); B) func(&x,y); C) func(&x,&y); D) func(x,y); (10) 要使字符串变量str具有初值\,正确的定义语句是[ ]。 A) char str[]={'L','u','c','k','y'}; B) char str[5]={'L','u','c','k','y'}; C) char str []=\ D) char str [5]=\ (11) 已知某函数的一个形式参数被说明为MAT[3][10],在下列说明中,与此等效的形参说明是[ ]。 A) int MAT[][10] B) int MAT[3][] C) int MAT[10][3] D) int MAT[][] (12) 若指针p定义为 char * =\则[ ]。 A) p所指向的数据不可改变,p在定义时可以不初始化。 B) p所指向的数据不可改变,p在定义时必须初始化。
共分享92篇相关文档