C++复习题1

 温馨提示:答案可能有几题会错,如果有疑问的希望提出来大家解决

1. 关于类和对象不正确的说法是(C

A) 类是一种类型,它封装了数据和操作

B) 对象是类的实例

C) 一个类的对象只有一个

D) 一个对象必属于某个类

2. 在类定义的外部,可以被访问的成员有(C

A) 所有类成员 B) privateprotected的类成员

C) public的类成员 D) publicprivate的类成员

3. 关于this指针的说法错误的是(A

A) this指针必须显示说明 B) 当创建一个对象后,this指针就指向该对象

C) 成员函数拥有this指针 D) 静态成员函数不拥有this指针

4. 声明一个类的对象时,系统自动调用(B )函数,撤消对象时,系统自动调用(C )函数

A) 成员函数 B) 构造函数 C) 析构函数 D) 普通函数

5. 下面对构造函数的不正确描述是(B

A) 系统可以提供默认的构造函数

B) 构造函数可以有参数,所以可以有返回值

C) 构造函数可以重载

D) 构造函数可以设置默认参数

6. 下面对析构函数的正确描述是(C

A) 系统不能提供默认的析构函数

B) 析构函数必须由用户定义

C) 析构函数没有参数

D) 析构函数可以设置默认参数

7. 对静态成员的不正确描述是( BC

A) 静态成员不属于对象,是类的共享成员

B) 静态数据成员要在类外定义和初始化

C) 调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针

D) 非静态成员函数也可以操作静态数据成员

8. 下面选项中,不是类的成员函数为(C

A) 构造函数  B) 析构函数  C)友元函数  D) 缺省参数的构造函数方言

9. 下面对友元的错误描述是(D

A) 关键字friend用于声明友元

B) 一个类的成员函数可以是另一个类的友元

C) 友元函数访问对象的成员不受访问特性影响

D) 友元函数通过this指针访问对象成员

10. C++中,类与类之间的继承关系具有(C

A) 自反性  B) 对称性  C) 传递性  D) 反对称性

11. 下列关于类的继承描述中,( A)是错误的

A) 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数

B) 派生类也是基类,但基类不一定具有派生类的全部属性和方法

C) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法

D) 一个基类可以有多个派生类,一个派生类可以有多个基类

12. 当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( A

A) public成员 B) private成员 C) protected成员 D) 友元

13. 当一个派生类私有继承一个基类时,基类中的所有仅有成员和保护成员成为派生类的(B

A) public成员 B) private成员 C) protected成员 D) 友元

14. 不论派生类以何种方法继承基类,都不能使用基类的(B

A) public成员 B) private成员 C) protected成员 D) public成员和protected成员

15. 下面描述中,错误的是(BC )(两个答案)

A) 在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问

B) 在基类定义的publicprotected成员在私有继承的派生类中可见,在类外可以被访问

C) 在基类定义的publicprotected成员在保护继承的派生类中不可见

D) 在派生类中不可见的成员要变成可访问的,需要进行访问声明

16. C++中,不能被派生类继承的函数是( BC)(两个答案)

A) 成员函数 B) 构造函数 C) 析构函数 D) 静态成员函数

17. 在创建派生类对象时,构造函数的执行顺序是(D

A) 对象成员构造函数、基类构造函数、派生类本身的构造函数

B) 派生类本身的构造函数、基类构造函数、对象成员构造函数

C) 基类构造函数、派生类本身的构造函数、对象成员构造函数

D) 基类构造函数、对象成员构造函数、派生类本身的构造函数

18. 当不同的类具有相同的间接基类时,有特点( AD)(两个答案)

A) 各派生类对象将按继承路线产生自己的基类版本

B) 派生类对象无法产生自己的基类版本

C) 为了建立惟一的间接基类版本,在基类定义前加virtual即可

D) 为了建立惟一的间接基类版本,应该声明虚继承

19. C++中,要实现动态联编,必须使用( D)调用虚函数

A) 类名 B) 派生类指针 C) 对象名 D) 基类指针

20. 下列函数中,可以作为虚函数的是( CD)(两个答案)

A) 普通函数 B) 构造函数 C)成员函数 D) 析构函数

21. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(B

A) 不同 B) 相同 C) 相容 D) 部分相同

22. 下面函数原型声明中,(C )声明了fun为虚函数

A) void fun()=0; B) virtual void fun()=0;

C) virtual void fun(); D) virtual void fun(){};

23. 若一个类中含有纯虚函数,则该类称为( D

A) 基类 B) 纯基类 C) 派生类 D) 抽象类

24. 假设A为抽象类,下列声明( B)是正确的

A) A fun(int); B) A *p; C) int fun(A); D) A Obj;

25. 下面描述中,正确的是(BD )(两个答案)

A) 虚函数是没有实现的函数 B) 纯虚函数的实现在派生类中

C) 抽象类是没有纯虚函数的类 D) 抽象类指针可以指向不同的派生类

26. 关于函数模板,描述错误的是(A

A) 函数模板必须由程序员实例化为可执行的函数模板

B) 函数模板的实例化由编译器实现

C) 一个类定义中,只要有一个函数模板,则这个类是类模板

D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

27. 下列的模板说明中,正确提( AC)(两个答案)

A) template <typename T1, typename T2>

B) template <class T1, T2>

C) template <class T1, class T2>

D) template <typename T1; typename T2>

28. 假设有函数模板定义如下:

Template <typename T>

Max(T a, T b, T &c)

{ c=a+b; }

下列选项正确的是( AB)(两个答案)

A) float x,y; float z; Max(x,y,z);

B) int x,y,z; Max(x,y,z);

C) int x,y; float z; Max(x,y,z);

D) float x; int y, z; Max(x,y,z);

老师说29-40题绝对不考

29. 关于类模板,描述错误的是(D

A) 一个普通基类不能派生类模板

B) 类模板从普通类派生,也可以从类模板派生

C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

D) 函数的类模板参数须通过构造函数实例化

30. 建立类模板对象的实例化过程为( C

A) 基类à派生类 B) 构造函数à对象

C) 模板类à对象 D) 模板类à模板函数

31. C++中,容器是一种(D

A) 标准类 B) 标准对象 C) 标准函数 D) 标准类模板

32. 下列类中( BD)(两个答案)不是输入/输出流类iostream的派生类

A) fstream B) ofstream C) strstream D)ostrstream

33. 在下列选项中(BCD )(三个答案)是ostream类的对象

A) cin B) cerr C) clog D) cout

34. read函数的功能是从输入流中读取(D

A) 一个字符 B) 当前字符 C) 一行字符 D) 指定若干个字符

35. 下列选项中,用于清除基数格式位置以十六制输出的语句是(B

A) cout<<setf(ios::dec, ios::basefield);

B) cout<<setf(ios::hex, ios::basefield);

C) cout<<setf(ios::oct, ios::basefield);

D) cin>>setf(ios::hex, ios::basefield);

36. 下列格式控制符,在iostream.h中定义的是(AD )(两个答案),在iomanip.h中定义的是(BC )(两个答案)

A) endl B) setfill C) setw D) oct

37. 下列串流类,在strstream.h中定义的是( BD)(两个答案),在sstream.h中定义的是(AC

A) istringstream B) istrstream C) ostringstream D) ostrstream

38. 包含类fstream定义的头文件是( A

A) fstream.h B) ofstream.h C) ifstream.h D) iostream.h

39. 要求打开文件 d:\file.dat,可写入数据,正确的语句是( D

A) ifstream infile(“d:\file.dat”, ios::in);

B) ifstream infile(“d:\\file.dat”, ios::in);

C) ofstream infile(“d:\file.dat”, ios::out);

D) fstream infile(“d:\\file.dat”, ios::in| ios::out);

40. 假定已定义浮点型变量data,以二进制方式把data的值写入输出文件流对象outfile中去,正确的语句是( C

A) outfile.write((float *) &data, sizeof(float));

B) outfile.write((float *) &data, data);

C) outfile.write((char *) &data, sizeof(float));

D) outfile.write((char *) &data, data)

41. 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化__D__

A)与虚基类下面的派生类个数有关  B)多次  C)两次  D)一次

42. 下面_ B _ 的叙述不符合赋值兼容规则。

A)派生类的对象可以赋值给基类的对象

B)基类的对象可以赋值给派生类的对象

C)派生类的对象可以初始化基类的引用

D)派生类的对象的地址可以赋值给指向基类的指针

43. 下列程序巾,划线处正确的语句是___C____

    #include <iostream.h>
    class Base
    {
    public:
        void fun(){ cout<<"Base::fun"<<endl; }
    };
    class Derived public Base
    {
        void fun(){
        _______________ //显式调用基类的函数fun()
        cout<<"Derived::fun"<<endl;
        }
    };

A) fun(); B) Base.fun(); C) Base::fun(); D) Base->fun();

44. 下列程序中,编译时会出错的语句是_______B__________

#include <iostream.h>
class Base{
public:
    Base(){ }
    Base(int i) { data=i; }
private:
    int data;
};
class Derived: public Base{
public:
    Derived() :Base(0) {}
    Derived(int x): Base(x) { }
};
void main(){
    Derived d1(1);
    Base *pb,b1;
    pb=&d1; //A
    d1=b1; //B
    Base &refB=d1;
    Derived d2=*pb; //C
    Derived &refD=refB; //D
}

45. 下列说法中错误的是____B_____

A)公有继承时基类中的public成员在派生类中仍是public

B)公有继承时基类中的private成员在派生类中仍是private

C)私有继承时基类中的public成员在派生类中是private

D)保护继承时基类中的public成员在派生类中是protected

46. 下面叙述错误的是____A_____

A)基类的protected成员在派生类中仍然是protected

B)基类的protected成员在public派生类中仍然是protected

C)基类的protected成员在private派生类中是private

D)基类的protected成员不能被派生类的对象访问

47. C++类体系中,不能被派生类继承的有____A____

A)构造函数 B)虚函数 C)静态成员函数 D)赋值操作函数

47下面对于友元函数描述正确的是(    C   )。

A.友元函数的实现必须在类的内部定义

B.友元函数是类的成员函数

C.友元函数破坏了类的封装性和隐蔽性

D.友元函数不能访问类的私有成员

47. 派生类的构造函数的成员初始化列表中,不能包含____C____

A)基类的构造函数

B)派生类中子对象的初始化

C)基类中子对象的初始化

D)派生类中一般数据成员的初始化

48 多继承的构造顺序可分为如下4步:

①所有非虚基类的构造函数按照它们被继承的顺序构造;

②所有虚基类的构造函数按照它们被继承的顺序构造;

③所有子对象的构造函数按照它们声明的顺序构造:

④派生类自己的构造函数体:

4个步骤的正确顺序是___C____

A)④③①② B)②④③① c)②①③④ D)③④①②

48已知print函数是一个常成员函数,没有返回值,下列表示中正确的项是(   A   

Avoid printf() const      Bconst void print()       Cvoid const print()    Dvoid print(const)

49 关于多继承二义性的描述中,错误的是_____C______

A) 一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访可能出现二义性

B)解决二义性的最常用的方法是对成员名的限定法

C)基类和派生类中同时出现的同名函数,也存在二义性问题

D)一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类.对该基类成员进行访问时,可能出现二义性

50.下面对静态数据成员的描述中,正确的是(    D )。

A.静态数据成员用关键字const进行声明

B.静态数据成员不可以由类的对象直接访问

C.静态数据成员不属于类的成员

D.静态数据成员可以直接用类名调用

51 设置虚基类的目的是___B____

A)简化程序

B)消除二义性

C)提高运行效率

D)减少目标代码

51. 下列虚基类的声明中,正确的是___D_____

A) class virtua1 Bpublic A

B) virtual class Bpublic A

C) class Bpublic A virtual

D) c1ass Bvirtual public A

52关于new运算符的错误的描述是(   A  )。

A.使用运算符new创建对象数组必须定义初始值

B.使用运算符new创建对象时,会调用类的构造函数

C.运算符new可以用来动态创建对象

D.使用new运算符创建的对象可以使用运算符delete删除

53关于对象的复制,下列说法错误的是(   D  

A.对象的复制指的是需要得到多个完全相同的对象

B.一般形式为类名 对象2(对象1);

C.建立对象时会调用一个复制构造函数

D.对象的复制和对象的赋值可以完全等同

二、填空题

28 派生类对基类的继承有三种方式:___①公有_____②保护______③私有__

29 类继承中,缺省的继承方式是___私有___

30 如果类Alpha继承了类Beta,则类Alpha称为__①派生____类,类Beta称为__②基____类。

31 C++提供的___多继承_____机制允许一个派生类继承多个基类,即使这些基类是相互无关的。

32 利用继承能够实现____软件复用________。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试好的高质量软件。

33 若类Y是类X的私有派生类,类Z是类Y的派生类,则类Z__不能____访问类X的保护成员与公有成员。

34 当用protected继承从基类派生一个类时,基类的public成员成为派生类的__protected______

成员,protected成员成为派生类的____ protected_____成员。

35 多继承情况下,派生类的构造函数的执行顺序取决于___定义___派生类时所指定的各基类的顺序。

36 构造函数___①不能___被继承,析构函数____②不能_____被继承。

37 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行_①基类的构造函数_再执行_②子对象的构造函数_,最后执行_③派生类本身的构造函数_

38 对基类数据成员的初始化必须在派生类构造函数中的____调用基类构造函数____处执行。

39 当撤消一个含有基类和子对象成员的派生类对象时,将首先完成__①派生类__的析构函数定义体的执行,接着完成 _②子对象_的析构函数定义体的执行,最后完成

_③基类__的析构函数定义体的执行。

40 _①多重__继承情况下,派生类中对基类成员的访问会出现二义性。解决二义性的方法是_②成员名限定法(指定域名)_③使用虚基类__

41 在派生类中使用基类的成员,可以显示地使用__成员名限定符(基类名::成员)__来使用基类成员。

43 设置虚基类的目的是__①解决多重继承中的二义性问题__,可通过__virtual____标识虚基类。

44 指向基类的对象的指针变量也可以指向__派生类__的对象。

46 ___①派生类_____类的对象可作为___②基类____类的对象处理。

47含有子对象的派生类的对象定义时,构造函数的执行顺序是  基类的构造函数->成员对象的构造函数->派生类自身的构造函数   析构函数的执行顺序是    跟前面的相反 。

推荐您阅读更多有关于“”的文章

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值