gpt4 book ai didi

c++ - 尚未构造对象的调用方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:40 32 4
gpt4 key购买 nike

有一个简单的类:

class A {
public:
A() {}
void set(int value) { value_ = value; }

private:
int value_;
};

及其全局实例:

A a;
  1. 在尚未构造的对象 a 上调用方法 set 是否可以?例如,当从另一个翻译单元中的另一个全局对象的构造函数调用 a.set(123) 时,就会发生这种情况。

  2. A的非参空构造函数时,调用a.set(123)设置的对象a中的值是否会保留 稍后为对象 a 调用?

最佳答案

Is it ok to call method set on a not yet constructed object a?

没有。您不能为尚未开始构建的对象调用成员函数。

(因为答案是,所以你的第二个问题不需要回答。)


如果您可能需要在动态初始化期间从多个翻译单元访问这个全局实例,您可以使用 Meyers 单例技术:

A& global_a()
{
static A a;
return a;
}

a 将在首次调用 global_a() 时初始化。请注意,在多线程程序中,您可能需要关注 synchronization of the initialization.

关于c++ - 尚未构造对象的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11453989/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com