★ 编译器自动生成的构造仅仅做让编译能通过的事情,它不会初始化成员变量。
★ 编译器并不会自动生成缺省的构造函数和拷贝构造函数,仅仅在它需要的时候。
没错!对于下面的类:
class Test {
int n;
};
编译器不会自动生成构造函数,因为没有字段需要初始化。
★ 很多时候都需要深拷贝,这时需要自己定义copy constructor和重载operator=。
★ 如果只需要浅拷贝,就不用定义copy constructor并逐一赋值,因为编译器自动生成的memcpy和memset更有效率。
★ 返回一个局部对象会导致两次拷贝构造:
T f() {
T t;
return t;
}
★ 全局和静态对象会在使用前自动初始化,所有字段置0。
博客主要围绕C++中编译器对构造函数的处理展开。指出编译器自动生成的构造仅保证编译通过,不会初始化成员变量,缺省构造和拷贝构造仅在需要时生成。还提及深拷贝需自定义函数,浅拷贝用编译器自动生成的更高效,以及返回局部对象的拷贝构造和全局静态对象的初始化情况。
694

被折叠的 条评论
为什么被折叠?



