C++类一定有拷贝构造函数吗 (二)

2014-11-24 00:04:27 · 作者: · 浏览: 10
4 call @ILT+150(std::basic_string,std::allocator >::basic_str 004012D9 mov eax,dword ptr [ebp-4] 004012DC pop edi 004012DD pop esi 004012DE pop ebx 004012DF add esp,44h 004012E2 cmp ebp,esp


看到了没,红色的,这是因为成员类对象含有拷贝构造函数,所以编译器要合成一个拷贝构造函数用以调用成员类对象的拷贝构造函数,对类对象的数据成员进行复制操作

其实上面的程序一构造函数与析构函数均不会合成,可以看一下这篇博客C++类一定有构造函数吗

在以下四种情况会产生默认拷贝构造函数

1:类的成员类对象有拷贝构造函数

2:类继承的基类含有拷贝构造函数

3:类含有虚函数

4:类继承于虚基类