#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(); 并不是在调用构造函数,而是产生一个匿名的对象
构造函数中不能再调用本类其他构造函数