#include <iostream> using namespace std; class aaa{ public: aaa() { i = new int(3); } aaa(int n) { aaa(); *i = n; } private: int* i; }; int main() { aaa* a = new aaa(9); return 0; }
为什么第13行会崩掉
解决方案
20
在两个构造函数中下断点,你会发现,虽然都能执行,但是this指针的值是不一样的
40
崩溃是原因是你的指针 i 并没有分配内存就使用了
aaa(int n)函数中的aaa(); 并不是在调用构造函数,而是产生一个匿名的对象
构造函数中不能再调用本类其他构造函数
aaa(int n)函数中的aaa(); 并不是在调用构造函数,而是产生一个匿名的对象
构造函数中不能再调用本类其他构造函数