懒加载 vs RAII
懒加载(Lazy Loading)
#include <iostream>
#include <memory>
class Resource {
public:
Resource() {
std::cout << "Resource acquired!" << std::endl;
}
~Resource() {
std::cout << "Resource released!" << std::endl;
}
void doSomething() {
std::cout << "Doing something with the resource." << std::endl;
}
};
class LazyLoader {
public:
void useResource() {
if (!resource) { // 懒加载:只有在需要时才创建资源
resource = std::make_unique<Resource>();
}
resource->doSomething();
}
private:
std::unique_ptr<Resource> resource;
};
int main() {
LazyLoader loader;
loader.useResource(); // 第一次调用,资源被创建
loader.useResource(); // 再次调用,使用已存在的资源
return 0;
}RAII(Resource Acquisition Is Initialization)
区别与联系
结论
Last updated