c++面试题杂项整理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_42948022/article/details/102516449

static用法及优点:

用法:不能在类声明中初始化,不能通过构造函数初始化,在定义时初始化
1static 成员 在类的作用域,避免与其他类成员,全局变量冲突。

阻止一个类的实例化:

纯虚函数,构造函数声明为public
在类内部建对象,不允许在外部建对象

main()执行前做了什么

全局对象的构造函数
用_onexit()注册的函数
//	atexit()注册的函数在main退出后执行

什么情况只能用构造函数初始化,不能用赋值初始化

const成员,引用成员

基类的析构是虚函数原因

指针调用对象,析构时执行的是指针类的析构函数。虚函数才能通过覆盖使其析构时调子类虚函数

构造不能是虚函数原因

虚函数调用:是一种在只有部分信息知道的情况下工作的机制,构造需要知道对象准确的类型。

空指针与悬垂指针

空指针:nullptr,null
垂悬指针:指针指向的空间delete后。指针就是垂悬指针

new+delete与malloc+free

malloc更具大小分匹配空间,不初始化。
new更具对象分匹配空间,默认初始化。

什么是类型安全

变量类型不能随意转换。
int a = 2.33; //可以执行 , 所以c++不是类型安全的

引用做返回值的好处与规则

内存中不产生返回值的副本。
正因如此,不可以返回局部变量的引用。//子函数结束,局部变量清空,引用无效了。
不可以返回子函数内malloc的内存的引用。//子函数结束,虽然内存没有释放但,指向内存的指针释放了,引用1也就无效了。
本质:函数参数为引用时,函数的栈不需要额外存储引用,实际上什么也不传,而是直接就用ebp和偏移去找。

猜你喜欢

转载自blog.csdn.net/qq_42948022/article/details/102516449
今日推荐