1、 1. C++语言属于( )。(选择一项) A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言 2. 下面选项中不属于面向对象程序设计特征的是( ) 。(选择一项) A)继承性 B)多态性 C)相似性 D)封装性 3. 可用作C++语言用户标识符的一组标识符是( )。(选择一项) A) void define +WORD B) a3_b3 _123 YN C) for -abc Case D) 2a DO sizeof 4
2、 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为( )。(选择一项) A) 0 B) 4 C) 8 D) 6 5. 下列情况中,哪一种情况不会调用拷贝构造函数 ( )(选择一项) A)用派生类的对象去初始化基类对象时 B)将类的一个对象赋值给该类的另一个对象时 C)函数的形参是类的对象,调用函数进行形参和实参结合时 D)函数的返回值是类的对象,函数执行返回调用者时 6. 以下哪一关键字可用于重载函数的区分( )(选择一项) A)extern
3、 B)static C)const D)virtual 7. 下列有关数组的叙述中,正确的是( )(选择一项) A)C++中数组的存储方式为列优先存储 B)数组名可以作为实参赋值给指针类型的形参 C)数组下标索引从1开始,至数组长度n结束 D)数组指针的语法形式为:类型名 *数组名[下标表达式]; 8. 下列有关继承和派生的叙述中,正确的是( ) (选择一项) A)派生类不能访问通过私有继承的基类的保护成员 B)多继承的虚基类不能够实例化 C)如果基类没有默认构造函数,派生类就应当声明带形参的构造函数 D)基类的析构函数和虚函数都不能够被继承
4、需要在派生类中重新实现 9. 实现运行时多态的机制是( )(选择一项) A)虚函数 B)重载函数 C)静态函数 D)模版函数 10. 若有下面的函数调用: fun(a+b, 3, max(n-1, b)); 其中实参的个数是( )(选择一项) A)3 B)4 C)5 D)6 11. 下列关于this指针的说法正确的是( )(选择一项) A)this指针存在于每个函数之中 B)在类的非静态函数中this指针指向调用该函数的对象 C)this指针是指向虚函数表的指针 D)this指针是指向类的函数成员的指针
5、12. 在下列关于C++函数的叙述中,正确的是( )(选择一项)
A)每个函数至少要有一个参数 B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明 D)函数不能自己调用自己
13. 下列运算符中,不能重载的是 ( )(选择一项)
A)&& B)!= C). D)->
14. 下面程序的输出结果是( )(选择一项)
#include
6、 a+n; } void main() { int k = 5; { int i = 2; k += fun(i); } k += fun(i); cout << k; } A)13 B)14 C)15 D)16 15. 下面的程序段的运行结果为( )(选择一项) char str[] = "job", *p = str; cout << *(p+2) << endl; A)98 B)无输出结果 C)字符’b’的地址 D)字符’b’ 16. 下面程序的输出结果是( )(选择一项) #i
7、nclude
8、};
void main()
{
B b(2);
b.dispb();
}
A)10,2 B)12,10 C)12,2 D)2,2
17. 下面程序的输出结果是( )(选择一项)
#include
9、t j=0) : Base(j) { cout << i; } ~Base1() {} }; class Base2: virtual public Base { public: Base2(int i, int j=0) : Base(j) { cout << i; } ~Base2() {} }; class Derived : public Base2, public Base1 { public: Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c),
10、
Base2(d), Base(a)
{ cout << b; }
private:
Base2 mem2;
Base1 mem1;
};
void main() { Derived objD (1, 2, 3, 4); }
A)134122 B)123412 C)14302012 D)143212
18. 下面程序的输出结果是( )(选择一项)
#include
11、Base { public: virtual void f() { cout << “f0+”; } void g() { cout << “g0+”; } }; class Derived : public Base { public: void f() { cout << “f+”; } void g() { cout << “g+”; } }; void main() { Derived d; Base *p = &d; p->f(); p->g(); } A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+
12、
19. 下面程序的输出结果是( )(选择一项)
#include
13、 for (int i=0; i<4; i++)
{
sum += fun(Sample(i));
}
cout << sum;
}A)12 B)16 C)10 D)34
20. 以下程序的输出结果是:( )(选择一项)
#include 14、
A.0 B. 1 C. 2 D. 3
21. 有如下程序段:
int i=1;
while(1)
{
i++;
if (i==10) break;
if(i%2==0) cout<<’*’;
}
执行这个程序段输出字符*的个数是( ) (选择一项)
A. 10 B. 3 C. 4 D.5
22. 下列关于虚基类的描述中,错误的是( ) (选择一项)
A. 使用虚基类可以消除由多继承产生的二义性
B. 构造派生类对象时,虚基类的构造函数只被调用一次
C. 声明 15、 class B:virtual public A 说明类B为虚基类
D. 建立派生类对象时,首先调用虚基类的构造函数
23. 有下类定义
Class A {
Char *a;
Public:
A():a(0){}
A(char *aa) {//把aa所指字符串拷贝到a所指向的存储空间
A=___________________;
Strcpy(a,aa);
~A() {delete [] a;}
};
正确的选择是( )(选择一项)
A. new char[strlen(aa)+1] B. char[strlen(aa)+1]
C. char[ 16、strlen(aa)] D. new char[sizeof(aa)-1]
24. 假定AA为一个类,a为该类私有的数据成员,GetValue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( )。(选择一项)
A) x.a B) x.a() C) GetValue() D) x.GetValue( )
25. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。(选择一项)
A) int AA::a( ) B) i 17、nt AA:a()
C) AA::a() D) AA::int a()
26. 有如下程序:
#include 18、stream>
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass& operator=(const MyClass&x){cout<<3; return *this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
obj1=obj2;
return 0;
}运行时的输出结果是( ) 19、选择一项)
A)1123444 B)11114444 C)121444 D)11314444
28. 有如下程序:
#include 20、 point *ptr_point=new point[3];
ptr=ptr_point;
}
point C;
delete[] ptr;
cout< 21、erator++(0)
30.对于类定义
class A{
public:virtual void func1( ){ }
void func2( ){ }
};
class B:public A{
public:void func1( ){cout<<″class B func 1″< 22、 )都不是虚函数
C. B::func1( )是虚函数,而A::func2( )不是虚函数
D. B::func1( )不是虚函数,而A::func2( )是虚函数
31.如果一个类的成员函数print()不修改类的数据成员值,则应将其声明为( ) (选择一项)
A.void print() const; B.const void print();
C.void const print(); D.void print(const);
32.下列关于纯虚函数和抽象类的描述中,不正确的是( ) (选择一项) 23、
A.纯虚函数是一个没有具体实现的虚函数
B.抽象类是包括纯虚函数的类
C.抽象类只能作为基类,其纯虚函数的实现在派生类中给出
D.可以定义一个抽象类的对象
33.若一个类的成员函数前用static关键字修饰,则该成员函数( ) (选择一项)
A. 可以被声明为const B. 没有this指针
C. 可以访问该类的所有成员 D. 只能用对象名来调用
34.从程序片断:
student zhangsan("张三","M",22);
zhangsan.id("2005131000");
可判断i 24、d是一个( ) (选择一项)
A. 私有成员数据 B. 私有成员函数
C. 公有成员数据 D. 公有成员函数
35.从程序片断:char name[] = "C++"; course(name);可判断函数course的调用采用的是( )(选择一项)
A.传值调用 B.带缺省参数值的函数调用 C.引用调用 D.传址调用
36. 关于运算符重载的不正确的描述是( ) (选择一项)
A.运算符重载函数是友元函数 B.体现了程序设计的多态性
C.增加 25、新的运算符 D.使运算符能对对象操作
37.内存泄漏是指( ) (选择一项)
A.内存中的数据出现丢失
B.试图释放一个已经释放了的动态分配的堆内存
C.函数中局部变量所占的栈内存没有及时回收
D.动态分配的堆内存在程序退出后始终被占用
38.在程序代码:A::A(int a, int *b) { this->x = a; this->y = b; }中,this的类型是( ) (选择一项)
A. int B. int * C. A D. A *
39.动 26、态内存分配的主要目的是( )(选择一项)
A.使程序按动态联编方式运行 B.正确合理的使用内存
C.提高程序的运行速度 D.提高程序的可维护性
40.设置虚基类的目的是( ) (选择一项)
A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代码
答案:
1—5 C C B A B
6—10 C B C A A
11—15 B C C B D
16—20 C C C C D
21—25 C C A D A
26—30 B A A D C
31—35 A D B D D
36—40 A A C B B
第9页 共9页






