为什么在类上面指定其他类名?

时间:2011-07-02 18:18:33

标签: c++ class

  

可能重复:
  When to use forward declaration?

在特定类之上指定其他类名有什么用?

class A;
class B;

class C
{
 ...
 ...
};

4 个答案:

答案 0 :(得分:7)

这是forward declaration

作为C的宿醉,C ++编译器以自上而下的方式工作(或多或少)。如果您希望类C以某种方式(通过指针或引用)引用类A或类B,则编译器必须事先知道它们的存在。

答案 1 :(得分:3)

这称为forward declaration。它允许您声明指向该类型的指针,而不包括其定义。当然,由于此时定义在编译器方面不存在,因此您只能声明指针或类型的引用,因为编译器不知道如何构造所述类型的对象,即它不能不确定它的大小。

答案 2 :(得分:1)

通过正向声明这样的类,你告诉编译器这些类是存在的,不用担心,你将在以后链接它们。

这不是包含具有完整定义的头文件,并且如果编译器不需要知道类的外观就足够了。例如,如果您只对当前文件中的类使用指针引用

答案 3 :(得分:0)

这称为前向声明,允许在定义的类原型中使用这些类。