在我的实现文件(.cc文件)中,我经常发现在类定义中定义成员函数(例如Pimpl类的函数)是很方便的。例如:
struct X::Impl {
void DoSomething() {
...
}
};而不是
struct X::Impl {
void DoSomething();
};
void X::Impl::DoSomething() {
...
}我认为这比实现类定义之外的函数更可取,原因有几点。它增强了可读性,并便利了将方法保持较小的实践(通过使添加它们变得容易)。代码也更易于维护,因为您从来不需要更新方法声明。
我看到的唯一缺点是类声明中定义的方法是隐式内联的,这通常不可取,因为对象代码的大小增加了。
我的问题是:
发布于 2012-06-01 23:23:31
我不知道如何防止内衬,但GCC可以使用属性。例如:
struct X::Impl {
void DoSomething() __attribute__((noinline)) {
...
}
};https://stackoverflow.com/questions/10858458
复制相似问题