我正在学习C++。

我想声明一个变量而不创建它的实例。

MyClass variable;

// More code

int main(int argc, char **argv)
{
   // More code
   variable = MyClass(0);

   // More code
}

如果我这样做,并且MyClass仅具有一个声明为MyClass::MyClass(int value)的构造函数,则它将失败。

我需要将其设置为全局,因为我将在CallBack函数上使用它,并且可以将该变量作为参数传递。

而且,我不想在声明变量时创建类的实例,然后在使用构造函数时创建另一个实例。我想我在浪费资源和CPU时间。

是否可以在没有实例的情况下声明变量?

最佳答案

使用指针来延迟实例化。将smart pointers首选为原始指针,这样您就不必担心手动内存管理。

#include <memory>

std::shared_ptr<MyClass> variable;

// More code

int main(int argc, char **argv)
{
   // More code
   variable = std::make_shared<MyClass>(0);

   // More code
}

您使用 std::unique_ptr 还是 std::shared_ptr 取决于您打算如何使用指针。

关于c++ - 声明类的变量而不创建其实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57046237/

10-16 20:46