我正在学习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/