物联网嵌入式学习的内容繁杂,很多小伙伴在准备物联网面试的时候,面对众多知识点无从下手。小千在此为大家整理了物联网面试题集锦—C++语言篇,希望能够帮助大家顺利通关!
1、构造函数的分类
按参数类型:分为无参构造函数和有参构造函数
按类型分类:普通构造函数和拷贝构造函数(复制构造函数)
2、构造函数的调⽤规则
默认情况下,c++编译器⾄少为我们写的类增加3个函数
1)默认构造函数(无参,函数体为空)
2)默认析构函数(无参,函数体为空) 3.默认拷⻉构造函数,对类中非静态成员属性简单值拷贝 如果用户定义拷贝构造函数,c++不会再提供任何默认构造函数 如果用户定义了普通构造(非拷贝),c++不在提供默认无参构造,但是会提供默认拷贝构造
//调用拷贝构造函数(如果用户 不实现拷贝构造 系统将调用默认的拷贝构造)
//默认的拷贝构造:单纯的整体赋值(浅拷贝)
//如果用户实现了拷贝构造、系统将调用用户实现的拷贝构造
记住一句话:旧对象 初始化 新对象 才会调用拷贝构造函数。
拷贝构造函数的注意事项
1.不能调用拷贝构造函数去初始化匿名对象,
2.对象作为函数的参数 如果实参与形参 都是普通对象 那么就会调用拷贝构造
3.函数返回局部对象 在qt中会被优化 从而调用不了拷贝构造
3、谈谈你对浅拷⻉与深拷贝的区别
浅拷贝
同⼀类型的对象之间可以赋值,使得两个对象的成员变量的值相同,两个对象仍然是独⽴的两个对象,这种情况被称为浅拷贝. ⼀般情况下,浅拷贝没有任何副作用,但是当类中有指针,并且指针指向动态分配的内存空间,析构函数做了动态内存释放的处理,会导致内存问题。 浅拷贝的问题(多次释放同一块堆区空间)
深拷贝
当类中有指针,并且此指针有动态分配空间,析构函数做了释放处理,往往需要自定义拷贝构造函数,自行给指针动态分配空间,深拷贝如果类中的成员指向了堆区空间 ,一定要记得在析构函数中释放该空间;如果用户 不实现 拷贝构造 系统就会提供默认拷贝构造;而默认拷贝构造 只是单纯的赋值 容易造成浅拷贝问题;用户记得要实现:无参构造(初始化数据)、有参构造(赋参数)、拷贝构造(深拷贝) 、析构函数(释放空间)。
更多关于“物联网培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。