C++选择题集
1.下列的各类函数中,不是类的成员函数。(  C  )
A)构造函数    B)析构函数    C)友元函数    D)拷贝初始化构造函数
2.作用域运算符“::”的功能是:(  B  )
A)标识作用域的级别的    B)指出作用域的范围的
C)给定作用域的大小的    D)标识成员是属于哪个类的
3.下列说明中const char *ptr;其中ptr应该是:(  C  )
A)指向字符常量的指针      B)指向字符的常量指针
C)指向字符串常量的指针    D)指向字符串的常量指针
4.已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(  A  )
A)void print()const;    B)const void print();
C)void const print():    D)void print(const);
5.在类定义的外部,可以被访问的成员有(  C  )
A)所有类成员            B)private的类成员
C)public的类成员        D)public或private的类成员
6.要求打开文件"d:\file.dat",可写入数据,正确的语句是:(  B  )
ifstream infile("d:\file.dat",  ios::in);
ifstream infile("d:\\file.dat", ios::in);
ofstream infile("d:\file.dat",  ios::out);
fstream  infile("d:\\file.dat", ios::in|ios::out);
7.关于类和对象不正确的说法是:(  C  )
A)类是一种类型,它封装了数据和操作    B)对象是类的实例
C)一个类的对象只有一个                D)一个对象必属于某个类
8.在C++中,类与类之间的继承关系具有(  C  )
A)自反性    B)对称性    C)传递性    D)反对称性
9.结构化程序设计所规定的三种基本控制结构是:(  C  )
A)输入、处理、输出    B)树形、网形、环形
C)顺序、选择、循环    D)主程序、子程序、函数
10.C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是:(  B  )
A)面向过程    B)面向对象    C)安全性    D)复用性
11.在C++中实现封装是借助于(  B  )
A)枚举    B) 类    C) 数组    D)函数
12.C++语言是从早期的C语言逐渐发展演变而来的与C语言相比,它在求解问题方法上进行的最大改进是:(  B  )
A)面向过程    B)面向对象    C)安全性    D)复用性
13.在C++中用(  D  )能够实现将参数值带回。
a)数组    b)指针    c)引用    d)上述ABC都可
14.考虑函数原型void test(int a,int b=7,char ch="*"),下面的函数调用中,属于不合法调用的是:(  C  )
A)test(5)    B)test(5,8)    C)test(6,"#")    D)test(0,0,"*");
15.下列关于类和对象的叙述中,错误的是:(  A  )
A)一个类只能有一个对象;      B)对象是类的具体实例;
C)类是对某一类对象的抽象;    D)类和对象的关系是一种数据类型与变量的关系。
16.已知: int m=10;下列表示引用的方法中,正确的是:(  C  )
A)int &Z;    B)int &t=10;    C)int &X=m;    D)float &f=&m;
17.对于int *pa[5];的描述中,正确的是:(  D  )
A)pa是一个指向数组的指针,所指向的数组是5个int型元素
B)pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C)pa[5]表示数组的第5个元素的值,是int型的值
D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针
指向类成员函数的指针
18.定义析构函数时,应该注意:(  C  )
A)其名与类名完全相同      B)返回类型是void类型
C)无形参,也不可重载      D)函数体中必须有delete语句
19.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(  B  )
A)受限制    B)保持不变    C)受保护    D)不受保护
20.下列不是函数重载所要求的条件是:(  D  )
A)函数名相同          B)参数个数不同
C)参数类型不同        D)函数返回值类型不同
21.在C++中执行以下4条语句后输出rad值为:(  C  )
static int hot=200;
int &rad=hot;
hot=hot+100;
cout<<rad<<endl;
A) 0      B) 100      C) 300        D) 200
22.类clase CC1的说明如下,错误的语句是:(  A  )
clase CC1{
int a=2;      //(A)
CC1();        //(B)
public:
CC1(int val);  //(C)
~CC1();        //(D)
};
23.下列各类函数中,不是类的成员函数是:(  C  )
A)构造函数              B)析构函数
C)友元函数              D)拷贝构造函数
24.类的指针成员的初始化是通过函数完成的,这个函数通常是:(  C  )
A)析构函数    B) 构造函数    C)其它成员函数    D)友元函数
25.关于构造函数的说法,不正确的是:(  A  )
A)没有定义构造函数时,系统将不会调用它    B)其名与类名完全相同
C)它在对象被创建时由系统自动调用          D)没有返回值
26.按解释中的要求在下列程序划线处填入的正确语句是:(  C  )
#include <iostream.h>
class Base{
public:
void fun(){cout<<"Base::fun"<<endl;}
};
class Derived:public Base{
public:
void fun()
{              //在此空格处调用基类的函数fun()
cout<<"Derived::fun"<<endl;}
};
A)fun();    B)Base.fun();    C)Base::fun();    D)Base->fun();
27.在C++中编译器所生成的文件的扩展名为(  B  )
A) .cpp    B) .obj    C) .lib    D) .exe
28.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(  C  )
A)受限制    B)保持不变    C)受保护    D)不受保护
29.有如下一段程序:
int f1(float);
int f2(char);
int f3(float);
int f4(float);
int(*pf)(float);
则以下不合法的是:(  C  )
A)int(*p)(float)=&f1;    B)pf=&f4;    C)pf=&f2;    D)pf=&f3;
30.通常拷贝构造函数的参数是:(  C  )
A)对象名    B)对象的成员名    C)对象的引用名    D)对象的指针名
31.系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:(  D  )
A)参数个数    B)参数类型    C)函数名称    D)函数的返回值类型
32.下列描述中,正确的是:(  D  )
A)所有的运算符号都可以重载。
B)基类类型的指针可以指向子类,子类类型的指针也可以指向基类。
C)可以在类的构造函数中对静态数据成员进行初始化。
D)动态联编要满足两个条件:被调用的成员函数是虚函数;用指针或引用调用虚函数。
33.关于成员函数特征的描述中,错误的是:(  A  )
A)成员函数一定是内联函数          B)成员函数可以重载
C)成员函数可以设置参数的默认值    D)成员函数可以是静态的
34.下列关于构造函数的描述中,错误的是:(  D  )
A)构造函数可以设置默认参数;    B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数;      D)构造函数不可以重载
35.下面描述中,表达错误的是:(  B  )
A)公有继承时,基类中的public成员在派生类中仍是public的
B)公有继承时,基类中的private成员在派生类中仍是private的
C)公有继承时,基类中的protected成员在派生类中仍是protected的
D)私有继承时,基类中的public成员在派生类中是private的
36.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,C++在求解问题方法上进行的最大改进是:(  B  )
A)面向过程    B)面向对象    C)安全性    D)复用性
37.有如下类声明“class A{int x;  ……};”,则A类的成员x是:(  B  )
A)公有数据成员    B)私有数据成员    C)公有成员函数    D)私有成员函数
38.有如下程序:执行后的输出结果应该是:(  A  )
#include<iostream.h>
class cla{
static int n;
public:
cla(){n++;}
~cla(){n--;}
static int get_n(){return n;}
};
int cla::n=0;
int main()
{
cla * p=new cla;
delete p;
cout<<"n="<<cla::get_n()<<endl;
return 0;
}
A)n=0      B)n=1      C)n=3      D)n=4
39.有如下程序:执行后的输出结果应该是:(  A  )
#include <iostream.h>
class A{
public:
A(){cout<<"A";}
};
class C:public A{
public:
C(){cout<<"C";}
};
void main(){C cobj;}
A) AC      B) CA      C) A    D) C
40.有如下程序:执行后的输出结果应该是:(  D  )
#include <iostream.h>
class BASE{
public:
~BASE(){cout<<"BASE";}
};
class DERIVED: public BASE{
public:
~DERIVED(){cout<<"DERIVED";}
};
void main(){DERIVED x;}
A)BASE    B)DERIVED    C)BASEDERIVED    D)DERIVEDBASE
41.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:(  C  )
A)TM * a    B)TN & a    C)TM a    D)TN a;
42.通过下述哪一项调用虚函数时,采用动态联编。(  A  )
A)对象指针    B)对象名    C)成员名限定    D)派生类名
43.在下述哪种情况下适宜采用inline定义内联函数。(  C  )
A)函数体含有循环语句      B)函数体含有递归语句
C)函数代码少、频繁调用    D)函数体含有switch语句
44.创建动态对象,需要使用操作符(  A  )
A) new    B) delete    C) .    D) *
45.删除动态对象,需要使用操作符(  B  )
A) new    B) delete    C) .    D) *
46.在C++中不能被重载的一组运算符是:(  A  )
A)::  ?:  .    sizeof      B)?:  .  sizeof  ++  ->
C)::  ?:  new  delete      D)++  --  ?:      sizeof
47.如果类A被说明成类B的友元,则(  C  )
A)类A的成员即是类B的成员

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。