C++基础测试

一:选择题(每题2分,其29题)

1.关于类和对象不正确的是( )

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

B:对象是类的实例

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

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

2.在类定义的外部去访问类中的成员,类中的成员可以被访问的有( )(友元除外)

A:所有类成员  B:private或protected成员

C:public成员  D:public或private成员

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

A:this必须显示说明       B:构造函数中可以使用this

C:成员函数可使用this     D:静态成员函数不拥有this指针

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

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

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

A:系统可以提供默认的构造函数  B构造函数可以有参数,所以可以有返回值

C:构造函数可以重载   D构造函数可以设置默认参数值

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

A:系统不能提供析构函数   B析构函数必须由用户定义

C析构函数没有参数      D析构函数可以设置默认参数值

7.对静态成员<static修饰的成员>的不正确描述是()

A:静态成员不属于对象,是类的其享成员

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

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

D:非静态成员函数也可以访问静态数据成员

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

A:构造函数 B:析构函数 C:C函数  D缺省参数的构造函数

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

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

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

C)友元成员函数访问对象的成员不受访问权限修饰符影响

D)C函数可以通过this指针访问对象成员

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

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

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

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

B)基类全部属性和方法与派生类不一定相同

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

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

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

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

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

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

14.下面描述中,错误的是( )

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

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

C)在基类定义的public和protected成员在保护继承的派生类中可见

D)  private成员在类外函数中被访问,类外函数需要进行友元访问声明

15.在C++中,一定不能被派生类继承的成员是()

A)成员函数   B)构造函数与析构函数 C)成员变量   D)虚函数

16.在创建派生类对象时(对象成员在派生类中),构造函数的执行顺序是( )

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

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

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

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

17关于常成员函数说明正确的是

A)常成员函数的函数体中能修改对象

B)常成员函数可以访问非常成员函数

C)非常成员函数不可以访问常成员函数

D)常成员函数中能访问常成员函数

18.在C++中,要实现动态联编,可以使用( )调用虚函数

A)类名

B)派生类指针

C)对象名

D)基类指针或基类的引用

19.下列函数中,可以作为虚函数的是()

A)C函数  B)构造函数  C)成员函数、析构函数  D)C风格的友元函数

20.下面函数原形声明中,()声明了fun为虚函数

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

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

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

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

22.下面描述中,正确的是( )

A)虚函数是没有实现的函数   B)纯虚函数可以被派生类实现

C)抽象类是没有纯虚函数的类 D)抽象类不能创建指针或引用

23)已知obj是一个对象,下面哪一个是不可能出现的?()
[A] obj.100   [B]  !obj [C] obj++ [D]  int r = obj+100

24 下述程序中,类C的public各有哪些属性成员(    )。

class B1

{

public:

int i ;

protected :

int k ;

};

class B2

{

public:

int l ;

private:

int m;

protected :

int q ;

};

class B3

{

public:

int p1;

};

class C: public B2, protected B1, private B3

{

public:

int c;

};

[A] i/l/p1     [B] c/l     [C] c/l/q     [D] i/l/q

25 下述程序运行后,显示结果为(    )。

class B1

{

public:

B1(int i) {cout<<"constructing B1 "<<i<<endl;}

~B1( ) {cout<<"destructing B1 "<<endl;}

};

class B2

{

public:

B2(int j) {cout<<"constructing B2 "<<j<<endl;}

~B2( ) {cout<<"destructing B2 "<<endl;}

};

class B3

{

public:

B3( ){cout<<"constructing B3 *"<<endl;}

~B3( ) {cout<<"destructing B3 "<<endl;}

};

class C: public B2, public B1, public B3

{

public:

C(int a, int b, int c, int d): B1(a),memberB2(d),memberB1(c),B2(b)

{

}

private:

B1 memberB1;

B2 memberB2;

B3 memberB3;

};

void main( )

{

C obj(1,2,3,4);

}

[A]

constructing B2 2                 [B] constructing B1 1

constructing B1 1 constructing B2 2

constructing B3 * constructing B3 *

constructing B1 3 constructing B1 3

constructing B2 4 constructing B2 4

constructing B3 * constructing B3 *

destructing B3 destructing B3

destructing B2 destructing B2

destructing B1 destructing B1

destructing B3 [A]

constructing B2 2

constructing B1 1

constructing B3 *

constructing B1 3

constructing B2 4

constructing B3 *

destructing B3

destructing B2 destructing B2

destructing B1 destructing B1

destructing B3

destructing B3

destructing B1 destructing B1

destructing B2 destructing B2

[C]

constructing B2 2 [D] constructing B2 2

constructing B1 1 constructing B1 1

constructing B3 * constructing B3 *

constructing B1 3 constructing B3 *

constructing B2 4 constructing B1 3

constructing B3 * constructing B2 4

destructing B3 destructing B3

destructing B2 destructing B2

destructing B1 destructing B1

destructing B3 destructing B3

destructing B2 destructing B1

destructing B1 destructing B2

26 下列的模板说明中正确的是()

A.template<typename T1,T2>

B.template<class T1,T2>

C.template<class T1,class T2>

D.template<typename T1,typename T2>

27  关于函数模板描述错误的是()

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

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

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

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

28 函数模板定义如下:

template <typename T>

Max( T a, T b ,T &c){c=a+b;}

下列选项正确的是()

  1. int x, y; char z;

Max(x, y, z);

  1. double x, y, z;

Max( x, y, z);

C.int x, y; float z;

Max( x, y, z);

D.float x; double y, z;

Max( x,y, z);

29. 下列有关模板的描述正确的, 类模板的模板参数()

A.不能作为数据成员的类型

B.不能作为成员函数的返回类型

C.不能作为成员函数的参数类型

D.以上三种均是错误的说法

30.下列有关迭代器描述错误的是(  )

A.迭代器本身是一个对象

B.迭代器对*运算符进行了重载

C.迭代器本质上是一个复杂的指针

D.迭代器可以访问任何对象

二、判断题(每题1分,共6题),正确勾,错误打叉

1. 执行语句A *p = A a[100];时,类A的构造函数会被调用100次。(× )

2. 一个类中的成员函数重载(overload)可以用const修饰符、函数原型的参数个数、对应位置的参数的类型和返回值类型为依据。(√ )

3. 实例化派生类对象时, 一定会调用到基类的某一个构造函数。(√ )

4. 如果类A是类B的友员, 类D以public继承方式从类B继承,则类A也是类D的友员。( ×)

5. 在同一个类中,可以定义重载的成员函数 (×)

  1. 在public继承方式下,基类中被说明为protected和private的成员能被其派生  类的成员函数访问。(× )
  • 简答题(12分),结合面向对象思想回答下面问题;
  1. 什么时候使用组合?

两个及以上相互独立的类能够放在一起,然后通过一个类就可以调用另一个类的对象从而调用另一个类的功能。

  1. 什么时候使用重写的虚函数?

两个类有继承关系的时候,派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类 型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。

3、有类定义

class Test

{

int a,b;

public:

Test ( int m, int n ) { a=m; b=n; }

void Set( int m, int n ) { a=m; b=n; }

//......

};

有人认为“Test和Set函数的功能一样,只要定义其中一个就够了”。这种说法正确吗?

不正确

为什么?

因为Test是有参构造函数,实例化对象的时候就可以改变a,b的值;而Set是普通函数,调用才能使用。

四、改错题:指出下面程序的错误或不恰当的地方,并且修改正确。(12分)

“circle.h”文件内容

class circle{

private:

int radius =0 ;

public:

virtual circle();//  circle();

//构造函数不可为虚函数

~circle();

};

circle.cpp文件内容

#include “circle.h”

#include<iostream>

using namespace std;

circle::circle()

{

cout<<"Here is constructor\n";

this->radius=6;

return radius;// 去掉

//构造函数不能有返回值

}

void circle::~circle() // circle::~circle()

//析构函数不能有返回类型

{

cout<<"Here is destructor\n";

}

//没有主函数

五、编程题(12)

“姓名”和“性别”是教师、学生共有的属性,“职称”和“工资”是教师特有的属性, “班级”和“成绩”是学生特有的。 请用类模拟?

#include"iostream"

using namespace std;

class School

{

public:

string name;

string sex;

};

class Teacher : public School

{

public:

string posts;

int wages;

};

class Student : public School

{

public:

string classroom;

int grades;

};

int main()

{

return 0;

}

这是一份普通的cpp答卷,可能有错相关推荐

  1. 腾讯财报中“最大秘密”:2018云收入91亿元,交首份TO B答卷

    腾讯财报中"最大秘密"云业务收入又一次被公开了:2018年,腾讯云收入91亿元,增长100%. 3月21日,腾讯发布2018年Q4及全年财报,2018全年收入3126.94亿元同比 ...

  2. 今日头条十年,交出了一份怎样的答卷?

    专注优质与兴趣的头条,正在进入新的成长期. 文|世昕 编|园长 对于今日头条来说,如何更好地把握住优质创作者,如何让更有价值的内容被看见,已经成为每年都绕不过去的话题. "22年对比21年, ...

  3. 我现在想去深圳找份普通的工作,深圳那边现在工作好找吗?

    普工相对来说容易找,你不怕苦累餐馆工作很多,西丽有间餐馆洗碗工都有4200元月,还有生活垃圾费归洗碗工拥有,我也觉得算高工资了,不用想工作绝对是很辛苦的,有些餐馆服务员只有3300的工资,有些不对等吧 ...

  4. 傅盛希望定义AI时代的机器人产品,2年交出这份可落地答卷

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI 8岁的猎豹,40岁的傅盛,从今往后都将拥有新印象. 3月21日,傅盛站上北京水立方,以猎豹董事长兼CEO身份,也以猎豹旗下子公司猎户星空之 ...

  5. 时隔一年,AMD交出了一份怎样的答卷?

    去年6月,老孙有幸在美国奥斯汀亲眼见证了承载着AMD收复企业级市场失地重任的AMD EPYC(霄龙)处理器的发布(详情请见<让业界震惊的EPYC究竟什么样?>一文),时光荏苒,一年时间转瞬 ...

  6. 新学期Flag已立,期待期末给自己一份满意的答卷

    新的学期开始了,在此借助CSDN的此次征文活动,为自己制定新学期计划,立下小小的flag,希望在新的学期里和大家一起加油! 一.自我介绍 研一新生一枚,目前正在学习神经网络以及Python,同时对前端 ...

  7. 2020大学计算机学科评估,2020年第五次学科评估大预测:华科将会交出一份怎样的答卷...

    弹指一挥间,2020年即将过去一半.而我国高等教育的重大事件--第五轮学科评估正在如火如荼地进行.而这备受各大高校和考生关注的第五轮学科评估,最终将会碰出怎样的结果,我们拭目以待. 而在我们翘首以盼的 ...

  8. 吴老师用计算机输入一份稿件,分数乘除法易错题复习1.pdf

    分数乘除法易错题精选 班级 姓名 家长签名 一.填空 1 4 2 5 3 1. 小时= ( )分 米= ( )厘米 ( ) m = 公顷 吨= ( ) 3 25 8 8 千克 2 ( ) 2. 把 米 ...

  9. CPP全面总结(涵盖C++11标准)

    OOP之类和对象 1. this指针的引入 每个成员函数都有一个额外的隐含的形参,这个参数就是this指针,它指向调用对象的地址.默认情况下,this的类型是指向类类型非常量版本的常量指针.可以表示成 ...

最新文章

  1. 防火墙iptables介绍
  2. C语言课程设计—图书管理系统
  3. python send 案例_python socket编程入门(编写server实例)+send 与sendall的区别与使用方法...
  4. gridcontrol值为0时设置为空_CSS设置宽高的小技巧
  5. Codeforces 741 D - Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  6. 联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级
  7. php判断数组中的键是否是某个字符串,php判断数组中是否存在指定键(key)的方法...
  8. mongoose-iot_如何使用带有ESP32和Mongoose OS的GCP-Cloud IoT核心版查看天气
  9. list复制到另一个list_一文总结saltstack的十一个常用模块,附实例讲解
  10. android calendarview 单月显示博客,android CalendarView
  11. ESP32开发 0.windows Vscode开发环境搭建,基于esp-idf-V4.2 | Cmake | Vscode插件
  12. 那些年 iOS 升级踩过的坑!
  13. Bailian2939 玩游戏【模拟】
  14. Entity Framework 4 数据事务操作
  15. JDBC 连接数据库,包含连接池
  16. 移动相机GoPro文件帮手—Helper for GoPro Files for Mac
  17. echarts地图迁徙图
  18. vue 登陆成功后携带不了后台传来的 set-cookie 并携带请求错误处理
  19. 漆翔宇计算机学院浙江大学,浙江大学20172018学年大学生学科竞赛获奖清单.pdf
  20. 如何提升自己的设计能力

热门文章

  1. JRuby——Java和Ruby的强强联合
  2. 高手速成android开源项目[View篇]
  3. SVM与K-Means
  4. 突破单IP频繁反爬虫限制的小技巧
  5. 备份Ubuntu 并制作成iso安装文件
  6. ARM-LINUX-GCC交叉编译工具链必知必会
  7. 利用手机app语音控制arduino
  8. uni-app:实现PayPal支付功能
  9. 第十四篇,STM32的CAN总线通信
  10. ES-JOB——分布式定时任务高级使用——控制台修改任务