在 C++11 中,全局对象可以通过函数调用实例化吗?



有两个文件ObjectCreator.h和ObjectCreator.cpp它们声明并定义了以下函数。

在 ObjectCreator.h 中

#include "Object.h"
Object* Create_Object();

在 ObjectCreator 中.cpp

#include "ObjectCreator.h"
Object* Create_Object()
{
return new Object();
}

问题是,我可以在主文件中通过以下方式创建 Object 的全局实例.cpp吗?

主要.cpp

#include "ObjectCreator.h"
static Object* object = Create_Object();
int main()
{
// Nothing here
}

我能问这个问题的最好方法是一个例子,我已经验证这是可能的。我只是不确定在 C++11 中是否有可能,或者这个技术术语是什么。我知道对象可以全局实例化,我只是不确定它们是否可以在 C++11 中以这种特定方式完成。

是的,你可以这样做,这是合法C++。

初始化非局部变量有三个三个步骤,例如您拥有的那个。

  1. 零初始化
  2. 常量初始化
  3. 动态初始化

在您的情况下,object将在最后一步中初始化。

您可以从标准中阅读有关三种初始化类型的更多信息。

最新更新