【发布时间】:2014-07-16 01:35:06
【问题描述】:
根据我的阅读,我应该尽可能使用前向声明。我有这样的类(由于前向声明,每个字段都是指针):
class A
{
// ...
A* a;
B* b;
C* c;
D* d;
E* e;
};
但是这样做有问题。
1- 这意味着为构造函数中的每个字段调用 new 和 delete(或至少使用智能指针新建),而堆栈分配的字段不需要这个。
2- 我听说堆栈分配比堆分配快。
3- 这也意味着几乎每个类的每个字段都应该是指针。
我是否像我的示例课程那样做正确的事情?还是我在前向声明中遗漏了什么?
【问题讨论】:
-
旁注:在
A* a;的情况下,你没有其他机会使用指针,因为A不能保留A - 它会产生无限依赖导致A的大小是无限的。 -
Qt 一直使用这个。他们声称这无关紧要,因为大多数代码无论如何都不是性能关键。
-
@Laethnes:真的很抱歉,这只是一个例子。
-
@sashoalm 是的,这是真的,我一直想知道它在小型设备上的表现如何:3。
-
@Aulaulz 无需道歉,我只是想向潜在的未来读者澄清这一点。
标签: c++ forward-declaration forward