说我有两类:定义的成员变量的指针或对象
“啊”
#include "B.h"
class A
{
public:
unique_ptr<B> b; //store as pointer
B b; //store as object
A() : b(new B())
{
}
};
“波黑”
class B
{
public:
//huge class
void foo() {};
};
而且我想使用在主:
“main.cpp”
#include "A.h"
int main()
{
unique_ptr<A> a(new A());
a->b->foo();
a->b.foo();
}
问题1:当存储和使用B作为指针而不是A中的对象时,会有什么性能提升吗?
问题2:在说“嗯”,我也不会执行#included B,而不是我会向前声明B:
class B;
然后,主内我便无法称之为A-> B- > foo(),因为B不在任何地方。什么是更好的设计,包括“A.h”中的“B.h”或将其包含在“main.cpp”中,我在哪里实际使用该函数?将它包含在“A.h”中会破坏前向规则,声明所有未实际使用的规则,但将其包含在“main.cpp”中对于使用这些类的程序员来说是非常糟糕的。我真的有复杂的类,我想避免任何可能的#include,以避免以后的混乱。
除非你需要用另一个对象替换'b'(即改变它指向的内容),那么在这里可能首选合成。很难说不知道设计的更多细节。 – 2014-12-03 19:51:42