构造函数互相调用的问题

C++语言 码拜 7年前 (2017-04-17) 1010次浏览
#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(); 并不是在调用构造函数,而是产生一个匿名的对象
构造函数中不能再调用本类其他构造函数

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明构造函数互相调用的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)