考虑C ++中两个众所周知的经验法则:
假设我在C ++中有以下类:
class D {
// some methods
A a; B b; C c;
};
遵循第一条经验法则我应该保留所有三个自动对象并添加包括:
#include <A.h>
#include <B.h>
#include <C.h>
class D {
// some methods
A a; B b; C c;
};
因此我增加了编译时间,因为当我包含D.h
遵循第二条规则我应该执行以下操作:
class A; class B; class C;
class D {
// some methods
A *a; B *b; C *c;
};
但在这种情况下,我必须自己管理对象的创建/删除,我们知道这通常会导致错误和内存泄漏。
这个问题有解决方案吗?如果可能的话,使用私有实现类是我想要避免的痛苦。
答案 0 :(得分:3)
(我假设您正在严格讨论D
拥有子对象实例的情况)这似乎是主观的,所以有点基于意见的答案:使用自动对象,如果相应的标题是如此之大编译时间明显变长,修复 问题。