C++怎么让一个类创建的对象在有需要的时候才被创建
时间: 2023-11-27 20:54:50 浏览: 28
C++中可以使用延迟初始化(Lazy Initialization)来实现在需要的时候才创建对象。具体实现方式如下:
1. 在类中添加一个私有静态指针成员变量,用于保存对象的地址。
2. 在类的公有静态成员函数中判断该指针是否为空,若为空则创建对象并将其地址赋给指针。
3. 在需要使用对象的地方,调用公有静态成员函数获取对象的地址,然后使用该对象。
下面是一个简单的示例代码:
```c++
#include <iostream>
class MyClass {
public:
static MyClass* getInstance() {
if (instance == nullptr) {
instance = new MyClass();
}
return instance;
}
void doSomething() {
std::cout << "Hello, world!" << std::endl;
}
private:
MyClass() {}
static MyClass* instance;
};
MyClass* MyClass::instance = nullptr;
int main() {
MyClass* obj = MyClass::getInstance();
obj->doSomething();
return 0;
}
```
在上面的代码中,MyClass类中定义了一个私有静态指针变量instance,用于保存对象的地址。getInstance()函数用于获取对象的地址,如果instance为空,则创建一个新的对象并将其地址赋给instance。最后,在main()函数中调用getInstance()函数获取对象的地址,并调用其成员函数doSomething()。