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<
class Base{
public:
void fun(){cout<<"Base::fun"<{
//在此空格处调用基类的函数 fun()
cout<<"Derived::fun"<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
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="<
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
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 的成员
B)类 B 的成员即是类 A 的成员
C)类 A 的成员函数可以访问类 B 的所有成员
D)类 B 的成员函数可以访问类 A 的所有成员
48.下面关于友元的描述中,错误的是:( D )
A)友元函数可以直接访问该类的私有成员。
B)一个类的友元类中的所有成员函数都是这个类的友元函数。
C)利用友元可以提高程序的运行效率,但却破坏了封装性。
D)友元关系不能被继承,是双向可交换的。
49.下列虚基类的声明中,正确的是:( B )
A)class virtual B: public A
B)class B: virtual public A
C)class B: public A virtual
D)virtual class B: public A
50.C++设置虚基类的目的是(
A
)
A)消除二义性
B)简化程序
C)提高运行效率
D)减少目标代码
51.有如下模板定义:
template T fun(T x,T y){return x*x+y*y;}
在下列对 fun 的调用中,错误的是:( C )
A)fun(2,8)
B)fun(2.0,8.2)
C)fun(2.3,8)
D)fun(2,8.3)
52.通常情况下,函数模板中的类型参数个数不能是(
A
)
A)0 个
B)1 个
C)2 个
D)3 个
53.以下关于 this 指针的叙述中正确的是:( D )
A)任何与类相关的函数都有 this 指针;
B)类的成员函数都有 this 指针;
C)类的友员函数都有 this 指针;
D)类的非静态成员函数才有 this 指针;
54.当一个类的某个函数被说明为 virtual 时,在该类的所有派生类中的同原型函数(
A
)
A)都是虚函数
B)只有被重新说明时才是虚函数
C)都不是虚函数
D)只有被重新说明为 virtual 时才是虚函数
55.在派生类中重新定义虚函数时,必须在下列哪方面与基类保持一致。(
A
)
A)参数类型
B)参数名字
C)操作内容
D)赋值
56.关于 const 关键字说法错误的是(
D
)
A)const 关键字可以修饰对象和成员函数
B)const 对象不能被修改
C)const 成员函数不能修改类数据成员
D)const 可以用于说明类
57.执行如下程序后的输出结果是:( B )
#include
class test{
static int count;
public:
test(){count++;}
~test(){count--;}
static int getCount(){return count;}
};
int test::count=0;
int main()
{
}
test * p=new test;
test * q=new test;
delete p;
cout<<"count="<