【发布时间】:2011-09-27 09:03:06
【问题描述】:
【问题讨论】:
-
检查我标记为重复的Q,它解释了使用前向声明时可以做什么和不能做什么。
【问题讨论】:
作为 C 的遗留物,C++ 编译器以自上而下的方式工作(或多或少)。如果您希望您的类C 以某种方式(通过指针或引用)引用类A 或类B,那么编译器必须事先知道它们的存在。
【讨论】:
class A; class B { func(A a); } 所以在这种情况下,我不需要包含定义类 A 的标头,只需转发声明 A?
A 的指针或引用。
这称为forward declaration。它允许您声明指向类型的指针,而不包括其定义。当然,由于就编译器而言此时该定义不存在,因此您只能声明指向该类型的指针或引用,因为编译器不知道如何构造所述类型的对象,即它不能不确定它的大小。
【讨论】:
通过前向声明这样的类,您是在告诉编译器这些类存在,不用担心,您稍后会链接它们。
这不是包含具有完整定义的头文件,如果编译器不需要知道类的样子就足够了。例如,如果您只对当前文件中的类使用 pointers 或 references。
【讨论】:
这称为前向声明,允许在已定义类的原型中使用这些类。
【讨论】: