社区
C++ 语言
帖子详情
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
打赏
收藏
C++类重载的默认构造函数中调用本类的全局对象?
如题, struct A { A(); int b; } a; A:A() { if(a.b == 0) ***** } int main() { return 0; } 请问这种情况是什么原理呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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() 反正语法上说得通,但是用起来很别扭吧
C++
语言基础视频教程
主要包括
类
的声明、
对象
定义、构造函数和析构函数、运算符
重载
、继承和派生、多态性实现等。 课程需要有C语言程序设计的基础(可以利用本人开出的《C语言与程序设计》系列课学习)。学习者能够通过实践的方式,学会...
C++
默认构造函数
、拷贝构造函数、析构函数 详解
大家都知道,
C++
的
类
构成
中
会有构造函数和析构函数。 而构造函数又分为
默认构造函数
、拷贝构造函数和自定义的构造函数。 构造函数 1、构造函数必须与
类
同名。 2、
C++
允许构造函数
重载
。 3、构造函数没有返回值...
C++
中
子
类
基
类
的构造函数和析构函数的
调用
C++
中
通常用构造函数来对
对象
中
的数据成员进行初始化,构造函数与
类
名同名。构造函数没有返回值,只对
对象
进行初始化。在建立
对象
时自动
调用
构造函数,每建立一个
对象
就
调用
一次构造函数。 析构函数 析构函数的作用...
C++
入门:构造函数,析构函数,拷贝构造函数,运算符
重载
详解
5. 如果
类
中
没有显式定义构造函数,则
C++
编译器会自动生成一个无参的
默认构造函数
,一旦用户显式定义编译器将不再生成。 6. 无参的构造函数和全缺省的构造函数都称为
默认构造函数
,并且
默认构造函数
只能有一个。 7...
⚡【
C++
要笑着学】(7) 默认成员函数:构造函数 | 析构函数 | 拷贝构造函数
我是柠檬叶子C,本章将继续讲解
C++
中
的面向
对象
的知识点,本篇主要讲解默认成员函数
中
的构造函数、析构函数和拷贝构造函数。还是和以前一样,我们将由浅入深地去讲解,以 "初学者" 的角度去探索式地学习。会一步步地...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章