构造函数互相调用的问题

刚强的小强 2016-10-15 04:58:18
#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行会崩掉
...全文
131 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-10-15
  • 打赏
  • 举报
回复
崩溃是因为你的指针 i 并没有分配内存就使用了 aaa(int n)函数中的aaa(); 并不是在调用构造函数,而是产生一个匿名的对象 构造函数中不能再调用本类其他构造函数
AlbertS 2016-10-15
  • 打赏
  • 举报
回复
在两个构造函数中下断点,你会发现,虽然都能执行,但是this指针的值是不一样的
AlbertS 2016-10-15
  • 打赏
  • 举报
回复
引用 2 楼 dosmlp 的回复:
[quote=引用 1 楼 shihengzhen101 的回复:] 你能告诉我哪是第13行吗?
*i = n; 应该有行数显示的吧[/quote] 你的i没有申请内存,你的12行主动调用构造函数aaa();是没有用的,那样只是相当于申请了一个临时变量,而你在主函数中申请的a对象中的i并没有申请空间
AlbertS 2016-10-15
  • 打赏
  • 举报
回复
引用 2 楼 dosmlp 的回复:
[quote=引用 1 楼 shihengzhen101 的回复:] 你能告诉我哪是第13行吗?
*i = n; 应该有行数显示的吧[/quote] 看到了,刚才网不好,没刷新出来
刚强的小强 2016-10-15
  • 打赏
  • 举报
回复
引用 1 楼 shihengzhen101 的回复:
你能告诉我哪是第13行吗?
*i = n; 应该有行数显示的吧
AlbertS 2016-10-15
  • 打赏
  • 举报
回复
你能告诉我哪是第13行吗?

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧