千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  物联网面试题  > 物联网面试题集锦—C++语言篇(四)

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

来源:千锋教育
发布人:syq
时间: 2022-07-12 11:00:00 1657594800

  物联网嵌入式学习的内容繁杂,很多小伙伴在准备物联网面试的时候,面对众多知识点无从下手。小千在此为大家整理了物联网面试题集锦—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。

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

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT