当我使用pimpl习语时,将所有方法定义放入类定义中是否是个好主意?例如:将所有方法定义在类定义中
// in A.h
class A {
class impl;
boost::scoped_ptr<impl> pimpl;
public:
A();
int foo();
}
// in A.cpp
class A::impl {
// method defined in class
int foo() {
return 42;
}
// as opposed to only declaring the method, and defining elsewhere:
float bar();
};
A::A() : pimpl(new impl) { }
int A::foo() {
return pimpl->foo();
}
据我所知,有把一个方法定义一个类定义的唯一问题是, (1)实现是在包括类定义,并 文件可见(2 )编译器可能会使该方法内联。
在这种情况下,这些并不是问题,因为类是在私人文件中定义的,并且由于仅在一个地方调用方法,所以内联无效。
将定义放入类中的好处是您不必重复方法签名。
那么,这是行吗?还有其他问题需要注意吗?
什么是__private__文件? – ezpz 2010-12-23 09:51:58
@ezpz:这不是C++的概念。它只是一个文件,类的用户不会#include,因此实现中的更改不会影响它们。 – Amnon 2010-12-23 10:16:29