我可以在父构造函数中多次重用函数的返回值吗?

Aar*_*onD 5 c++ constructor caching function return-value

与此问题类似,但足够不同,我不认为它是重复的:
C++在初始化列表中的基类初始化之前调用函数


我有这个构造函数:

EditorGrid::EditorGrid(int width, int height) :
    Grid(width  ,   //workingWidth
         height ,   //workingHeight
         (SettingsApp::getInstance(0)->iconSize + SettingsApp::getInstance(0)->iconSpace                                         )  ,   //pitchWidth
         (SettingsApp::getInstance(0)->iconSize + SettingsApp::getInstance(0)->iconSpace + SettingsApp::getInstance(0)->iconLabel)      //pitchHeight
         )
{
    //EditorGrid-specific setup
}
Run Code Online (Sandbox Code Playgroud)

它有效,但是SettingsApp::getInstance(0)当我知道它每次都会返回相同的东西时,我会多次打电话看起来很难看.我可以调用一次,只是在这种情况下重用该值吗?
(在这种情况下,指向SettingsApp对象的指针)

(它的结构是这样的原因是因为不同的孩子Grid有不同的方程pitchWidthpitchHeight,我想保持隐含使用相同的对象处处不实际传递的单身主意.)

bol*_*lov 6

创建一个(可能是私有的)ctor,将您想要计算的值作为参数一次并委托给它:

EditorGrid::EditorGrid(int width, int height, /*your_type*/& instance_0) :
    Grid(width, height,
         instance_0.iconSize + instance_0.iconSpace,
         instance_0.iconSize + instance_0.iconSpace + instance_0.iconLabel
{
    //EditorGrid-specific setup
}

EditorGrid::EditorGrid(int width, int height) :
    EditorGrid(width, height, *SettingsApp::getInstance(0))
{
}
Run Code Online (Sandbox Code Playgroud)