有时我使用嵌套类的前向声明:
class A;
class B
{
private:
A* object_A;
public:
B(){}
};
问题:如果我现在使用类B
的前向声明(此时已声明并定义了B
)对于C
类中的用法,会发生什么?这是否会导致类B
出现任何问题,因为它已定义(使用方法等实现)但是与类C
的前向声明一起使用?以下代码片段中的语法class B;
是否以某种方式覆盖先前声明,定义和实现的类B
?
class B;
class C
{
private:
B* object_B;
public:
C(){}
};
答案 0 :(得分:2)
语法类B;在下面的代码片段中以某种方式覆盖先前声明,定义和实现的类B?
前瞻性声明与覆盖无关。它只是给编译器提示类型定义是在某处实现的。对于用户定义的指针类型,编译器不需要定义,但需要知道对象的类型。