【发布时间】:2017-06-20 07:09:29
【问题描述】:
与这个问题类似,但差异很大,我不认为它是重复的:
C++ Calling a function before base-class initialization in the initialization list
我有这个构造函数:
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
}
它有效,但是当我知道每次都会返回相同的东西时,多次调用SettingsApp::getInstance(0) 对我来说看起来很难看。我可以调用一次并在这种情况下重用该值吗?
(在这种情况下,指向SettingsApp 对象的指针)
(它的结构是这样的原因是因为Grid 的不同子代对pitchWidth 和pitchHeight 有不同的方程,我想保留在任何地方隐式使用相同对象而不实际传递它的单例想法。 )
【问题讨论】:
-
static inline int getDefaultPitchWidth()?这通常是处理重复代码的方式。 -
@StoryTeller
inline在代码中仍然有意义吗? -
@EdgarRokyan - 定义“有意义”
-
@EdgarRokyan - 不是。作为链接规范非常需要它。这就是为什么在类定义中提供的每个函数也隐含
inline。
标签: c++ function caching constructor return-value