全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  wlw物联网面试题

物联网面试题集锦—C++语言篇(四)

发布时间:2022-07-12 11:00:00
发布人:syq

  物联网嵌入式学习的内容繁杂,很多小伙伴在准备物联网面试的时候,面对众多知识点无从下手。小千在此为大家整理了物联网面试题集锦—C++语言篇,希望能够帮助大家顺利通关!

物联网面试题

  1、谈谈啥叫对象成员以及对象成员的构造函数调用方式

  在类中定义的数据成员⼀般都是基本的数据类型。但是类中的成员也可以是对象,叫做对象成员。

  C++中对对象的初始化是非常重要的操作,当创建⼀个对象的时候,c++编译器必须确保调⽤了所有子对象的构造函数。如果所有的子对象有默认构造函数,编译器可以自动调用他们。但是如果子对象没有默认的构造函数,或者想指定调用某个构造函数怎么办?

  那么是否可以在类的构造函数直接调用子类的属性完成初始化呢?但是如果子类的成员属性是私有的,我们是没有办法访问并完成初始化的。

  解决办法非常简单:对于⼦类调用构造函数,c++为此提供了专门的语法,即构造函数初始化列表。 当调用构造函数时,⾸先按各对象成员在类定义中的顺序(和参数列表的顺序无关)依次调用它们的构造函数,对这些对象初始化,最后再调用本身的函数体。也就是说,先调用对象成员的构造函数,再调用本身的构造函数。 析构函数和构造函数调用顺序相反,先构造,后析构。

  2、谈谈你对explicit的理解

  c++提供了关键字explicit,禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用;

  (1)C++中只带有一个参数的构造函数,或者或者除了第一个参数外其余参数都有缺省值的多参构造函数,承担了两个角色;

  1.用于构建单参数的类对象

  2.隐含的类型转换操作符

  例如:一个类A的构造函数A(int i)就是,既可以用来作为构造器,又可以实现隐式转换A a=1;因为1可以通过构造函数A(int i)转换为一个类A的对象。(隐含的类型转换操作符)

  (2)explicit关键字只对有一个参数的类构造函数有效, 如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的, 所以explicit关键字也就无效了。

  (3)声明为explicit的构造函数不能在隐式转换中使用,只能显示调用,去构造一个类对象。

  (4)尽量避免有二义性的类型转换,如果类中包含一个或多个隐式类型转换,则必需使用explicit关键字确保在类类型和目标类型之间只存在唯一一种隐式转换方式,否则将出现二义性。

  (5)但是将拷贝构造函数声明成explicit并不是良好的设计,一般只将有单个参数的constructor声明为explicit,而copy constructor不要声明为explicit。

  更多关于物联网培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

相关文章

物联网公司面试题:边缘计算是什么,与传统云计算的区别

2023-07-28

物联网公司面试题:保障物联网安全的措施有哪些?

2023-07-26

物联网公司面试题:如何确保设备之间的通信安全性和数据的保密性?

2023-07-24

物联网公司面试题:介绍CoAP协议的特点及其在物联网中的应用

2023-07-21

请列举几个物联网安全威胁,解释如何提高物联网系统的安全性

2023-07-18

物联网中的边缘计算是什么?请解释其优势和应用场景

2023-07-18
在线咨询 免费试学 教程领取