cpp文件在特殊情况下适合放一个完整class(声明及实现)吗

我觉得没有问题,但你似乎混淆了几个概念:1. 要不要放在一个文件里跟暴不暴露是两回事。即使你把B的声明和实现分离,由于公开接口并不依赖于B,你完全可以仅在A.cpp(而不是A.h)里用到B.h,而B.h并不需要被放在公开的头文件路径里。如果必须在某些private成员中提到B的话,可以采用PImpl技法来隐藏。2. 在我看来,在B没有别人要用的前提下,只要B足够简单,放在A.cpp里是没有问题的,通常B会是一个Helper类(我在Google写C++,这边类似的情况很多)。3. 最大的问题在于你没法直接对B写单元测试——如果对A模块的单元测试能覆盖B的逻辑,我觉得就没问题。当然如果本来就不写单元测试,那当我没说。
■网友
【cpp文件在特殊情况下适合放一个完整class(声明及实现)吗】 没问题。。。。
在 cpp 里放一个类的完整声明与实现,但是不在头文件中声明,可以这么做的~
例如
class ObjectPrivate;class Object { ObjectPrivate* d_ptr;};像这样,只在头文件进行前向声明但是没有实现的做法比比皆是呀~

■网友
可以,我还把四五个类声明跟实现放在一个cpp中过。


    推荐阅读