1、关于函数的调用下面不正确的是( ).
A:由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
B:函数的调用可以在任意函数之间进行,只要有需要
C:一个函数可以自己调用自己
D:函数返回时可以不带返回值,这时函数在定义时其返回值的类型用void表示
答案:A
2、下列描述正确的是( ).
A:C++中,有字符串常量也有字符串变量.
B:C++中,字符串的处理只能用string类提供的字符串处理方法.
C:C++中,字符串的结束标识为'\n'. '\0'
D:C++中,处理字符串既可以用字符数组也可以用string类提供的处理方法.
答案:D
3、由类中创建的对象称为( ).
A:属性
B:类的实例
C:基类
D:派生类
答案:B
4、关于this指针正确的叙述是______.
A:非静态函数成员将this指针作为函数的隐含参数.
B:this指针为只读指针.
C:return *this返回的是调用该函数的对象.
D:其余选项都正确.
答案:D
5、关于 C++与 C 语言关系的描述中,( )是错误的。
A.C 语言是 C++语言的一个子集
B.C 语言与 C++语言是兼容的
C.C++语言对 C 语言进行了一些改进
D.C++语言和 C 语言都是面向对象的
答案:D
6、关于 C++与 C 语言关系的描述中,( )是错误的。
A.C 语言是 C++语言的一个子集
B.C 语言与 C++语言是兼容的
C.C++语言对 C 语言进行了一些改进
D.C++语言和 C 语言都是面向对象的
答案:D
7、设有程序段
int m=20; while (m=0) m=m++;
则下面描述中正确的是( )。
A.while
循环执行 10 次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
答案:C
8、设有程序段
int m=20; while (m=1) m=m++;
则下面描述中正确的是( )。
A.while
循环执行 10 次
B.循环是无限循环
C.循环体语句一次也不执行
D.循环体语句执行一次
答案:B
9、当调用函数时,实参是一个数组名,则向函数传送的是( )。
A.数组的长度
B.数组的首地址
C.数组每一个元素的地址
D.数组每个元素中的值
答案:B
10、有如下函数调用语句:
func(rec1, rec2+rec3, (rec4, rec5));
则该函数调用语句中,含有的实参个数是( )。
A.3
B.4
C.5
D.有语法错
答案:A
11、若已定义: int a[9], *p=a;并在以后的语句中未改变 p 的值,不能表示 a[1] 地址的
表达式是( )。
A.p+1
B.a+1
C.a++
D.++p
答案:C
12、在基类型相同的两个指针变量之间,不能进行的运算是( )。
A.< //判断指针g高低
B.= //赋值
C.+
D.– //取两指针之间相隔的同类型元素个数
答案:C
13、在( )情况下适宜采用inline定义内联函数。
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
答案:C
14、设void f1(int * m,long & n);int a;long b;则以下调用合法的是()。
A.f1(a,b);
B.f1(&a,b);
C.f1(a,&b);
D.f1(&a,&b);
答案:B
15、C++对C语言作了很多改进,下列描述中()使得C语言发生了质变,从面向过程变成了面向对象。
A.增加了一些新的运算符;
B.允许函数重载,并允许设置缺省参数;
C.规定函数说明必须用原型;
D.引进了类和对象的概念;
答案:D
16、下列函数中,( )不能重载。
A.成员函数
B.非成员函数
C.析构函数
D.构造函数
答案:C
17、下列运算符中,( )运算符不能重载 // . (成员访问运算符) * (成员指针访问运算符)
A.&& :: (域运算符) ? : (条件运算符) sizeof (长度运算符)
B.[ ]
C.::
D.<<
答案:C
18、关于动态绑定的下列描述中,( )是错误的。
A.动态绑定是以虚函数为基础的
B.动态绑定在运行时确定所调用的函数代码
C.动态绑定调用函数操作是通过指向对象的指针或对象引用来实现的
D.动态绑定是在编译时确定操作函数的
答案:D
19、关于虚函数的描述中,( )是正确的。
A.虚函数是一个static 类型的成员函数
B.虚函数是一个非成员函数
C.基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数
D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型
答案:C
20、关于纯虚函数和抽象类的描述中,( )是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
答案:C
21、下列描述中,( )是抽象类的特性。
A.可以说明虚函数
B.可以进行构造函数重载
C.可以定义友元函数
D.不能定义该类对象 //但是可定义指针
答案:D
22、cout 是由I/O 流库预定义的( )。
A.类
B.对象
C.包含文件
D.常量
答案:B
23、有关类和对象的说法下列不正确的有( )。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象和关系与数据类型和变量的关系相似
答案:C
24、在下面类声明中,关于生成对象不正确的是( )。
class point
{ public:
int x;
int y;
point(int a,int b) {x=a;y=b;}
};
A.point p(10,2);
B.point *p=new point(1,2); //很重要 在纯虚基类中的应用很多
C.point *p=new point[2];
D.point *p[2]={new point(1,2), new point(3,4)};
答案:C
25、命名空间应用于:
A.在类外定义类的成员函数
B.避免各个不同函数、变量等的名称冲突
C.提高代码的执行速度
D.以上答案都正确
答案:B
26、所有类都应该有:
A.构造函数
B.析构函数
C.构造函数和析构函数
D.以上答案都不对
答案:C
27、析构函数可以返回:
A.指向某个类的指针
B.某个类的对象
C.状态信息表明对象是否被正确地析构
D.不可返回任何值
答案:D
28、对于类之间的友元关系:
A.如果类A是类B的友元,则B的成员函数可以访问A的私有成员 //反了
B.如果类A是类B的友元,则B也是A的友元。 //单向友元
C.如果类A是类B的友元,并且类B是类C的友元,则类A也是类C的友元。 //无继承
D.以上答案都不对。
答案:D
28、友元的作用是
A.提高程序的运用效率
B.加强类的封装性 //破坏了封装性和隐藏性
C.实现数据的隐藏性
D.增加成员函数的种类
答案:A
29、在C++语言中设置虚基类的目的是( ) 。
A.简化程序代码
B.提高程序的运行效率
C.解决多继承造成的二义性问题
D.缩短程序的目标代码
答案:C
30、假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()
A.x.a
B.x.a()
C.x->a()
D.(*x).a()
答案:B
31、静态成员函数没有:
A.返回值
B.this指针
C.指针参数
D.返回类型
答案:B
32、下面对静态数据成员的描述中,正确的是
A.静态数据成员是类的所有对象共享的数据
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员
D.静态数据成员不能通过类的对象调用,只能通过“类名::标识符”调用
答案:A
33、下面对静态数据成员的描述中,正确的是? 在类外初始化 如 int student::a=0;
A、静态数据成员可以在类体内进行初始化
B、静态数据成员不可以被类的对象调用
C、静态数据成员不受private控制符的作用
D、静态数据成员可以直接用类名调用
答案: D
34、继承机制的作用是
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
答案:C
35、在公有继承的情况下,允许派生类直接访问的基类成员包括______。
A.公有成员
B.公有成员和保护成员
C.公有成员、保护成员和私有成员
D.保护成员
答案:B
36、下列关于派生类构造函数和析构函数的说法中,错误的是
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类声明了带有形参表的构造函数,则派生类就应当声明构造函数 //不理解但是硬记
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
答案:D
37、建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为
A.abc
B.acb
C.cab
D.cba
答案:A
38、下列关于继承的描述中,错误的是( )。
A.析构函数不能被继承 //易忘
B.派生类是基类的组合
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变
答案:D
39、
下面关于继承和派生的构造函数和析构函数的程序,输出结果是
#include
using namespace std;
class AA {
public:
AA() { cout << "A"; }
~AA() { cout << "a"; }
};
class BB: public AA {
AA aa;
public:
BB() { cout << "B"; }
~BB() { cout << "b"; }
};
int main() {
BB bb;
return 0;
}
A.AABaab
B.AABbaa
C.BAAaab
D.BAAbaa
答案:B
40、如有函数定义:void func(int x = 0, int y = 0){ …. },则下列函数调用中会出现问题的是____。
A.func(1,2, 3);
B.func(1,2);
C.func(1);
D.func();
答案:A
41、以下有关函数的叙述中正确的是( )。
A.函数必须返回一个值
B.函数体中必须有return语句
C.两个同名函数,参数表相同而返回值不同不算重载
D.函数执行中形参的改变会改变实参
答案:C
42、以下说法中正确的是
A.一个类一定会有无参构造函数
B.构造函数的返回值类型是void
C.一个类只能定义一个析构函数,但可以定义多个构造函数
D.一个类只能定义一个构造函数,但可以定义多个析构函数
答案:C
43、设有如下代码段:
class A {
public:
void func1() {
cout << "A1" << endl;
}
virtual void func2() {
cout << "A2" << endl;
}
};
class B : public A {
public:
void func1() {
cout << "B1" << endl;
}
void func2() {
cout << "B2" << endl;
}
};
int main() {
A *a = new B;
a->func1();
a->func2();
}
则输出结果为:
A.A1 A2
B.A1 B2
C.B1 A2
D.B1 B2
答案:D
44、下面程序的运行结果为
#include
class A
{
int num;
public:
A(int i){num=i;}
A(A &a){num=a.num++;}
void print(){cout<
A.11
B.12
C.21
D.22
答案:C
45、假设MyClass是一个类,则该类的拷贝初始化构造函数的声明语句为( )
A.MyClass&(MyClass x);
B.MyClass(MyClass x);
C.MyClass(MyClass &x);
D.MyClass(MyClass *x)
答案:C
46、为类提供对外接口的是( )
A.公有成员函数
B.私有成员函数
C.保护成员函数
D.友元函数
答案:A
47、下列哪一种情况下,类的复制构造函数不会被调用
A.用类的一个对象赋值给另一个对象时
B.当用类的一个对象去初始化该类的另一个对象时
C.如果函数的形参是类的对象,调动函数时,进行形参和实参结合时
D.如果函数的返回值是类的对象,函数执行完成返回调用者时
答案:A
48、已知int i, a;
执行语句i=(a=2*3,a*5),a+6;
后,变量i
的值是( )。
A.6 //问的是i的值不是表达式
B.12
C.30
D.36
答案:C
49、有如下的字符串数组定义语句,
char str1[ ]={'p','r','o','g','r','a','m'};
char str2[ ]={'p','r','o','g','r','a','m','\0'};
char str3[ ]="program";
则下列说法正确的是( ).
A) str1中的数据可以作为一个整体(字符串)参加运算.
B) str2和str3中的数据只能作为一个整体(字符串)参加运算.
C) str2和str3中的数据既可以元素为单位参加运算,也可以作为
一个整体(字符串)为单位参加运算.
D) str1、str2和str3中的数据既可以元素为单位参加运算,也可以
作为一个整体(字符串)为单位参加运算.
答案:C
50、