有一个简单的课程:
class A {
public:
A() {}
void set(int value) { value_ = value; }
private:
int value_;
};
Run Code Online (Sandbox Code Playgroud)
及其全局实例:
A a;
Run Code Online (Sandbox Code Playgroud)
set在尚未构造的对象上调用方法是否可以a?例如,当a.set(123)从另一个翻译单元中的另一个全局对象的构造函数调用时,就会发生这种情况.
当后来为对象a调用a.set(123)非参数和空构造函数时,通过调用设置的对象中的值是否会保留?Aa
是否可以在尚未构造的对象上调用方法集
a?
不可以.您不能为尚未开始构建的对象调用成员函数.
(由于答案是否定的,你的第二个问题不需要回答.)
如果您可能需要在动态初始化期间从多个翻译单元访问此全局实例,则可以使用Meyers单例技术:
A& global_a()
{
static A a;
return a;
}
Run Code Online (Sandbox Code Playgroud)
aglobal_a()首次调用时将初始化.请注意,在多线程程序中,您可能需要关注初始化的同步.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |