我想实现懒惰初始化在C++中,我正在寻找一种很好的方式来调用Initialize()
成员函数,当其他方法如object->GetName()
得到调用。调用一个对象的“初始化”功能时,其中一个成员函数被调用
眼下如下我已经实现了它:
class Person
{
protected:
bool initialized = false;
std::string name;
void Initialize()
{
name = "My name!"; // do heavy reading from database
initialized = true;
}
public:
std::string GetName()
{
if (!initialized) {
Initialize();
}
return name;
}
};
这不正是我需要暂时。但是为每种方法设置初始化检查都非常繁琐,所以我想摆脱这一点。如果有人知道用C++改进上述示例的一种好方法,我想知道!
例如,当使用->
时,可能可能使用operators
来实现呼叫Initialize()
?
谢谢!
在构造函数中初始化您的对象。 –
@RichardCritten这打破了懒加载的目的。使用延迟加载,因此只有在实际访问对象时才会填充对象数据。这就是你使用'initialized'机制的原因。 –
如何在'Initialize'函数中检查'if(!initialized)'?然后,所有'GetName'函数都要调用'Initialize()'。 –