C++类重载的默认构造函数中调用本类的全局对象?

ksdjfalsfj 2015-06-25 07:55:59
如题,
struct A
{
A();
int b;
} a;

A:A()
{
if(a.b == 0)
*****
}

int main()
{
return 0;
}

请问这种情况是什么原理呢?
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2015-06-26
  • 打赏
  • 举报
回复
大概说下我的想法,不能保证准确性。首先你的a作为一个全局的对象 他是拥有static storage。而对于static storage的 variable的初始化可能经历两个阶段,第一个是 zero-initialized 第2个阶段就是所谓的constructor初始化阶段。如果是这样那么就可以解释你的问题了。当然具体的可能需要一个很熟悉标准的人来回答。可以@raje 不记得是不是他了。另外一个就是飞天御剑流,估计他很少上了
fly_dragon_fly 2015-06-26
  • 打赏
  • 举报
回复
类成员函数可以访问本类任何成员, 不过这样用有什么意义
ksdjfalsfj 2015-06-26
  • 打赏
  • 举报
回复
感谢楼上各位的回答~ 这样写确实没有编译错误,A::A()这里要修正下。 经过Visual Studio 2013调试,在main函数前,会先执行定义全局对象语句,然后执行定义的默认构造函数,然后返回定义,进入main函数,最后销毁。 代码中这个类仅使用了一次,就是这里定义一次。可能这里就为了做这点事情,
失散糖 2015-06-25
  • 打赏
  • 举报
回复
改成A::A() 反正语法上说得通,但是用起来很别扭吧

64,654

社区成员

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

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