一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,每小题1 分,共15分。)
1.C++语言是从早期的C语言逐渐发展演变而来的。与C语言相比,它在求解
问题方法上进行的最大改进是(B )
(A)面向过程(B)面向对象(C)安全性(C)复用性
2.说明内联函数的关键字为(D )
(A)virtual (B) static (C) enum (D) inline
3.下列运算符中,不可以重载的运算符是(B )
(A)[] (B) : : (C) () (D)=
4.下列关于类与对象的说法中,不正确的是(C )
(A)对象是类的一个实例
(B)任何一个对象只能属于一个具体的类
(C)一个类只能有一个对象
(D)类与对象的关系和数据类型与变量的关系相似
5.下面有关重载函数的说法中正确的是(C )
(A )重载函数必须具有不同的返回值类型(B )重载函数形参个数必须不
(C )重载函数必须有不同的形参列表(D )重载函数名可以不同
6.下列关于构造函数的描述中,错误的是(D )
(A )构造函数可以设置默认参数(B )构造函数在定义类对象时自动执行
(C )构造函数可以是内联函数(D )构造函数不可以重载
7.有关析构函数的说法不正确的是(C )
(A)一个类中析构函数有且只有一个
(B)析构函数无任何函数返回类型
(C)析构函数和构造函数一样可以有形参
(D)析构函数作用是在对象被撤消时收回先前分配的内存
8.对于重载X类的前缀方式++的友元函数为(A )
(A)X operator++(X&)
(B)X X::operator++()
(C)X operator++(X&, int)
(D)X X::operator++(int i)
9.关于派生类中的构造函数和析构函数,以下说法正确的是(C )
(A)派生类的构造函数必须显式调用基类的构造函数
(B)派生类的析构函数必须显式调用基类的析构函数
(C)构造函数按基类到派生类的次序执行
(D)析构函数按基类到派生类的次序执行
10.考虑函数原型void testfunc ( float x, int y = 7, char z ='*'),下面的函数调用中,
属于不合法调用的是(C ) 一
(A ) testfunc (5.31)(B ) testfunc (5.31,8) ( C ) testfunc (5.31,' # ') (D )
enum c++testfunc (5.31,0,'*')
11.TestClass为一个类,执行“TestClass x[3],*p[2];"语句会自动调用该类的构造函数(B )次
(A)2 (B)3 (C)4 (D)5
以下关于指针和引用的说法正确的是(D )
(A) 指针和引用都必须在声明时对其进行初始化 (B) 指针和引用完全一样 (C) 指针和引用本身都是数据类型 (D)指针和引用都可以作为参数传递 13. 若在类X 外有函数调用X :: 函数 (A)私有静态成员函数 (C)公有静态成员函数 14. 关于this 指针,以下(B ) (A) this 指针是指向对象的指针 以指向常量 (C) this 指针不
能作为赋值运算的目标对象 向对象的常指针 15. 以下说法错误的是(D ) 无论建立多少个该类的对象,都只有一个静态数据的存储空间。 静态数据成员属于类,而不属于对象。 静态成员函数没有this 指针。
静态数据成员的存储空间由构造函数来分配。 (A) (B) (C) (D) 1. # include <iostream.h> class XX protected: int k; public: XX (int n = 5 ): k (n) ( ) 〜XX() ( cout« "XX";} virtual void f (); ); void XX:: f() ( cout« k +3;} class YY : public XX public : 〜YY() ( cout« "YY";} void f () cout « k - 3; XX::f(); }
);
int main ()
func(),则函数func ()是类X 的(C ) (B)公有非静态成员函数 (D)友元函数 不正确 (B) this 指针不可 (D) this 指针是指
XX *p = new YY;
p->f();
delete p;
return 0;
)
执行上面的程序将输出什么结果
28XX
2 ・ #include<iostream.h>
class Sample
{
int n;
public:
Sample(int i)(n=i;}
friend int add(Sample &sl,Sample &s2);
);
Sample s2(20);
cout«add( s 1, s2)«endl;
)
);
void main ()
{
A objAl;
AobjA2(objAl);
B objBl;
B objB2 (objA2);
}
执行上面的程序将输出什么结果
A()
Copy A()
A()
B()
Copy A()
A()
B(A) called
4. #include “iostream.h"
int f(int);
int main()
{
int i;
for(i=0;i<5;i++)
cout<<f (i) <<,,z/;
returnO;
}
int f (int i)
{
static int k=l;
for (;i>0; i -------- )
k + = i;
return k;
}
1251121
五、指出下列程序的错误,说明错误的原因,并改正(共10分) class C
{
private:
int a;
public:
void set(int p) (a = p;);
)
c& g()

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