小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Programming language
  4. C/C++
  5. 正文

《C++面向对象程序设计》2018年秋季期末考试答案(选择题)

2018年11月13日 2194点热度 1人点赞 1条评论

1.关于复制构造函数,下列说法正确的是

A.系统不会生成缺省复制构造函数,因此必须自己实现

B.复制构造函数是形如X::X(X)的函数

C.Myclass c1, c2; c1.n = 1; c2 = c1;第三句将会调用复制构造函数

D.调用函数A Func() {   A a(4);    return a;   }时,将会调用A的复制构造函数

解析:

只要你不写构造函数,系统就会自动帮你生成缺省的构造函数,包括复制构造函数,故A错误。复制构造函数的格式是X::X(X&)或X::X(const X &),故B错误。复制构造函数起作用主要有以下三种情况:

1)当用一个对象去初始化同类的另一个对象时;

2)如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的复制构造函数将被调用;

3) 如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用。

由此可得,C错误,D正确(第3种情况)。

2.关于虚函数,下列说法不正确的是

A.不允许以虚函数作为构造函数

B.没有虚函数便无法实现多态

C.一般来讲,如果一个类中定义了虚函数,则不可将析构函数也定义为虚函数

D.不能用抽象类定义对象

解析:

在学习虚函数的时候,明确说过构造函数和静态函数不能使用virtual,即不能成为虚函数,虚函数是实现多态的基础,在实现多态的时候,析构函数也经常会被定义为虚函数,抽象类是可以定义对象的。这是一个概念题。

3.关于 this 指针,以下说法不正确的是

A.static成员函数内部不可以使用this指针

B.在构造函数内部可以使用this指针

C.在析构函数内部可以使用 this 指针

D.const成员函数内部不可以使用this 指针

解析:

一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。静态成员函数是类的一部分,作用是为了处理静态数据成员,它没有this指针,静态成员函数可以直接访问该类的静态成员,但不能直接访问类中的非静态成员。构造函数、析构函数、const成员函数都是成员函数,故可以使用this指针,静态成员函数因为其设计的原因,不可以使用is指针。

4.以下关于多态的说法那个不正确?

A.在成员函数中调用虚函数,是多态

B.通过“基类对象名.函数名"的方式调用虚函数,不是多态

C.多态的函数调用语句中,函数一定是虚函数

D.通过“基类引用名.函数名"的方式调用虚函数,是多态

解析:

多态的表现形式有以下几种:

1)通过基类指针调用基类和派生类中的同名虚函数时:

①若该指针指向一个基类的对象,那么被调用的是基类的虚函数;

②若该指针指向一个派生类的对象,那么被调用的是派生类的虚函数。

2)通过基类引用调用基类和派生类中的同名虚函数时:

①若该引用引用的是一个基类的对象,那么被调用的是基类的虚函数;

②若该引用引用的是一个派生类的对象,那么调用的是派生类的虚函数。

故B、D正确,A错误。要实现多态,函数一定是虚函数,这是定义,故C正确。

5.map的每个元素包括KEY(first)和VALUE(second)。关于map容器,下列哪种说法错误

A.map支持下标运算符

B.map的不同元素可以有相同的VALUE

C.map支持STL的sort算法

D.map支持双向迭代器

解析:

map的设计问题,不做解释,详情可以查看map的具体解析就会明白。

6.下列说法错误的是

A.可以在一个类的友元函数中使用this指针

B.每个类只有一个析构函数

C.抽象类至少包含一个纯虚函数

D.构造函数不可以是virtual函数

解析见第3题。

7.关于继承和派生的描述中,下列说法错误的是:

A.派生类的成员函数中,不能访问基类的private成员

B.在派生类的析构函数执行之前,会先调用基类的析构函数

C.派生类对象的地址可以赋值给基类指针

D.派生类可以有和基类同名同参数的成员函数

解析:

继承的权限如下:

若继承方式是public,基类成员在派生类中的访问权限保持不变,也就是说,基类中的成员访问权限,在派生类中仍然保持原来的访问权限;

若继承方式是private,基类所有成员在派生类中的访问权限都会变为私有(private)权限;

若继承方式是protected,基类的共有成员和保护成员在派生类中的访问权限都会变为保护(protected)权限,私有成员在派生类中的访问权限仍然是私有(private)权限。

故A正确。C正确,实践中已经实现。D可以通过多态来实现。B的正确过程应该是:构造函数先执行基类构造函数,再执行派生类的构造函数,析构函数先执行派生类的构造函数,再执行基类的构造函数。

8.以下哪种使用std::sort算法的方式是不合法的:

A. vector<int> a; …; sort(a.begin(), a.end());

B. bool b[99]; …; sort(b, b + 99);

C. string c = “2333”; …; sort(c.begin(), c.end());

D. list<int> d; …; sort(d.begin(), d.end());

解析:

A/B/C均可以实现,list应该使用mylist.sort();这种格式来进行排序。

9.类A重载的运算符声明是int operator<(A &other) const,那么以下说法中正确的是:

A.小于号左侧的A对象不可以是const的

B.小于号右侧的A对象不可以是const的

C.这个写法是错误的,因为小于号的返回类型必须是bool

D.使用小于号的时候,other参数处,传进来的对象实际上会被复制一次

解析:

该运算符使用时类似于c.operator<(other)。小于号左侧的A对象就是这个表达式中的c,是可以const,也可以不const的,但是小于号右侧的A对象是不能为const的,因为若左侧的A对象不是const,根据非const成员函数可以访问非const对象的非const数据成员、const数据成员,但不可以访问const对象的任意数据成员,那么一旦右侧为const的,这个比较就无法进行了,故A错误,B正确。

返回值为bool类型可以为int,故C错误,声明中参数是引用,故不会被复制一次,D错误。

10.以下STL中的函数模板哪个可以作用于set

A. sort

B. random_shuffle

C. find

D. 都不行

解析:

见set的使用说明。

本答案解析为本人整理,查阅了有关课本和网上的相关资料,如有转载请注明转载来源。本文首发于本博客(http://www.yushuai.xyz/2018/11/13/4130.html),未来还将发表于我的个人公众号(小奥的学习笔记)和我的GitHub、Gitee主页。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: C++学习笔记
最后更新:2018年11月13日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
Java语言程序设计(进阶)(第三章)整理 博客即日起开始更新 AEC个人学习串讲之AEC3:时延对齐、线性处理、非线性处理 《ultraman china》第一话 中国享有对琉球群岛(日本称为“冲绳县”)的主权 计算机组成原理笔记第六章(6.1~6.2)
标签聚合
linux 算法 leetcode 鸟哥的linux私房菜 生活 学习 Python 高中 Java python学习
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 8 个月前(10月20日) :wink:
niming 发布于 9 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号