C++ c语言的const和c++的const/结构对象内存的区别、拷贝构造、赋值函数、静态成员、单例模式、mutable、 explicit关键字
C语言中的const与C++中的区别?
在C语言和C++语言中const都是用来保护数据的,且C++中还对const保护的数据进行了优化,一旦数据被const保护,就不会再去内存中读取数据,而是一直使用最初的,这样哪些数据被强行修改也不会造成影响。
C++中的const还可以用来修饰成员函数,这种被const修饰的成员函数被称为常函数,这种常函数隐藏的this指针会被cons保护。
没有成员的的结构对象,在C语言和C++中分别占多少个字节内存,为什么?
C语言中的空结构对象0字节,而C++中的1字节。C++的空结构对象之所以有1字节是因为 C++中的类、结构、联合可以有成员函数。
拷贝构造函数
拷贝构造是一种特殊的构造函数,格式:
类名(const 类名& that)
{
}
调用拷贝构造函数的情况
用旧对象给新对象初始化时会自动调用拷贝构造。
例:
Test t;
Test t1 = t; // 自动调用拷贝构造
拷贝构造的任务
顾名思义就是拷贝构造负责把旧对象中的成员变量的值拷贝给新对象,默认情况下编译器会自动生成一个拷贝构造完成上任务。