静态函数和虚函数的区别?
静态函数在编译的时候就已经确定运行时机,虚函数在运行的时候动态绑定。虚函数因为用了虚函数表
机制,调用的时候会增加一次内存开销。
全局变量和局部变量的区别是什么?
存储的地方不同;生命周期不同
在头文件中定义静态变量是否可行,为什么?
不可行,如果在头文件中定义静态变量,会造成资源浪费的问题,同时也可能引起程序错误。因为如果
在使用了该头文件的每个C语言文件中定义静态变量,按照编译的步骤,在每个头文件中都会单独存在一
个静态变量,从而会引起空间浪费或者程序错误所以,不推荐在头文件中定义任何变量,当然也包括静
态变量
#include< filename. h> 和 # include" filename. h"有
什么区别?
对于 include< filename. h>,编译器先从标准库路径开始搜索 filename.h,使得系统文件调用较快。而
对于# include“ filename.h"”,编译器先从用户的工作路径开始搜索 filename.h,然后去寻找系统路径,
使得自定义文件较快
如何使用 define声明个常数,用以表明1年中有多少秒(忽
略闰年问题)
C++智能指针是什么
shared_ptr:
本质不变,在函数调用中,因为本身支持复制操作,所以不用加move可以直接传递。
并且在传递到函数中,use_count() 会增加,并在函数销毁时候还原。
在函数中修改指向的值,在外部的指针指向的值也会改变。
使用引用传递,则在传递到函数中时,计数不会增加。
weak_ptr:
weak_ptr 是一个不需要所有权的指针,所以我们可以通过用weak_ptr来声明属性,解决循环依
赖
可以通过lock()来将weak_pte升级为shared_ptr;
unique_ptr
同一个内存空间同时只能有一个指针来管理。
智能指针的内存泄漏如何解决?
为了解决循环引用导致的内存泄漏,引入了弱指针 weak_ptr , weak_ptr 的构造函数不会修改引用计数
的值,从而不会对对象的内存进行管理,其类似一个普通指针,但是不会指向引用计数的共享内存,但
是可以检测到所管理的对象是否已经被释放,从而避免非法访问