社区
C++ 语言
帖子详情
全局对象构造的顺序
caddor2011
2014-05-28 10:01:04
全局对象构造的顺序
有2个全局对象, 全局对象a,使用全局对象b的时候,结果发现a先构造了,b的构造函数没有执行。
为了回避这个问题,于是我用new 一个a, a中再使用全局对象b.
问题虽然回避了, 依然不爽,到底如何解决这个问题呢。
vc有一些指令来强奸某个对象先构造, 我试了一下,似乎不行。
...全文
224
5
打赏
收藏
全局对象构造的顺序
全局对象构造的顺序 有2个全局对象, 全局对象a,使用全局对象b的时候,结果发现a先构造了,b的构造函数没有执行。 为了回避这个问题,于是我用new 一个a, a中再使用全局对象b. 问题虽然回避了, 依然不爽,到底如何解决这个问题呢。 vc有一些指令来强奸某个对象先构造, 我试了一下,似乎不行。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zilaishuichina
2014-05-28
打赏
举报
回复
C++规定,在同一个编译单元(同一个.cpp程序)中,先定义的对象先创建,后定义的对象后创建;而销毁时则相反,后定义的对象先销毁,先定义的对象后销毁。 但在不同的.cpp程序中,C++对此则没有定义,不同的编译器和链接器可能会有不同的处理。通常的情况与链接的顺序有关。 lz你可以不要依赖构造函数,你可以自己写Init函数,然后按照你自己的顺序需要去调用全局对象的Init
ri_aje
2014-05-28
打赏
举报
回复
同一个编译单元,先定义的对象先构造。 不同的编译单元,顺序没有要求,不要依赖这种“顺序”。 非得要求顺序的话,使用函数局部静态对象。
caddor2011
2014-05-28
打赏
举报
回复
引用 4 楼 mujiok2003 的回复:
非要用的话,使用使用函数内的static 对象。
这些话,我搜索岛很多类似帖子, 我想知道一些具体的实现方案,举例子吧 全局对象a, b a要引用b, b是一个全局的,很多对方都用到它, 非要用的话,使用使用函数内的static 对象。 你的意思是这样用: A& GetA() { static A a; return a; } B& GetB() { static B b; return b; } 这2个函数可以作为全局函数。 A的构造函数里要引用b A::A() { int a = GetB().成员1; int b = GetB().成员2; } 这样对吗?
mujiok2003
2014-05-28
打赏
举报
回复
非要用的话,使用使用函数内的static 对象。
mujiok2003
2014-05-28
打赏
举报
回复
慎用全局对象,避免构造依赖, 异常, 线程安全,false sharing等各种问题。
500条结婚标语.pdf
500条结婚标语.pdf
考虑不确定性的含集群电动汽车并网型微电网随机优化调度研究(Matlab代码实现)
考虑不确定性的含集群电动汽车并网型微电网随机优化调度研究(Matlab代码实现)
skill批量化生产视频.zip
花叔的内容创作 Skills 合集 - AI审校、选题生成、视频大纲、素材搜索等 11 个实用技能
车-电-路网时空分布负荷预测研究(Matlab代码实现)
车-电-路网时空分布负荷预测研究(Matlab代码实现)
【配电网重构】基于混合整数二阶锥配电网重构研究(Matlab代码实现)
【配电网重构】基于混合整数二阶锥配电网重构研究(Matlab代码实现)
C++ 语言
65,212
社区成员
250,516
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章