我在执行文件(.cc的文件),我经常发现它的方便类定义来定义的成员函数(如平普尔类的功能) 。例如:C++ - 避免在类定义中定义的函数的隐式内联
struct X::Impl {
void DoSomething() {
...
}
};
,而不是
struct X::Impl {
void DoSomething();
};
void X::Impl::DoSomething() {
...
}
我觉得这是最好实现功能的类定义之外的几个原因。它增强了可读性,并促进了保持方法小的做法(通过使它们易于添加)。代码也更容易维护,因为您永远不必更新方法声明。
我看到的唯一的缺点是在类声明中定义的方法是隐式内联,这是因为在对象代码的尺寸的增加通常不期望的。
我的问题是:
我有这个权利?这种做法还有其他缺点,我错过了吗?
隐式内联是否担心什么?编译器是否足够聪明以拒绝我的隐式请求来内联不应该内联的方法?
是否有可能(通过编译器扩展或以其他方式)来声明在类定义中所定义的方法不被内联?
这不是更具可读性,功能应该小的想法来自教授,而不是现实世界。这是一个虚假的规则。 –
GCC有'-fno-inline',但我认为关闭它会很愚蠢,我相信gcc会做出比我更聪明的决定。 – Flexo
@JohnDibling:同意。值得注意的是,为了可读性的目的,函数*的C++代码应该很小,但生成的代码不需要。让编译器做最好的事情。 –