之前在上C++的课的时候,印象中有那么一句话:
如果一个类没有任何构造函数,那么编译器会生成一个默认的构造函数
今天在看《深度探索C++对象模型》的第二章:“构造函数语意学”的时候发现之前听到的说法是错误的。
比如说如下代码:
class A {
public:
int a;
};
int main(void) {
A a;
a.a = 4;
A a2;
a2.a=5;
return 0;
}
按照之前的说法,类A没有任何构造函数,编译器会自动生成一个默认的构造函数,但事实是并不会。把上面的代码反汇编后可以看到结果:
main:
push rbp
mov rbp, rsp #int main(void)
mov DWORD