错误使用前向声明?
Wrong use of forward declaration?
有时我对嵌套 classes 使用前向声明:
class A;
class B
{
private:
A* object_A;
public:
B(){}
};
问题:如果我现在使用 class B
的前向声明(B
在此时声明和定义)用于 class 中的用法,会发生什么情况C
?这是否会导致 class B
出现任何问题,因为它已定义(通过方法的实现等)但与 class C
的前向声明一起使用?以下代码片段中的语法 class B;
是否以某种方式覆盖了先前声明、定义和实现的 class B
?
class B;
class C
{
private:
B* object_B;
public:
C(){}
};
Does the syntax class B; in the following code-snippet overwrites somehow the previous declared, defined and implemented class B?
前向声明与覆盖无关。它只是向编译器提示类型定义已在某处实现。对于用户定义的指针类型,编译器不需要定义,但需要知道对象的类型。
有时我对嵌套 classes 使用前向声明:
class A;
class B
{
private:
A* object_A;
public:
B(){}
};
问题:如果我现在使用 class B
的前向声明(B
在此时声明和定义)用于 class 中的用法,会发生什么情况C
?这是否会导致 class B
出现任何问题,因为它已定义(通过方法的实现等)但与 class C
的前向声明一起使用?以下代码片段中的语法 class B;
是否以某种方式覆盖了先前声明、定义和实现的 class B
?
class B;
class C
{
private:
B* object_B;
public:
C(){}
};
Does the syntax class B; in the following code-snippet overwrites somehow the previous declared, defined and implemented class B?
前向声明与覆盖无关。它只是向编译器提示类型定义已在某处实现。对于用户定义的指针类型,编译器不需要定义,但需要知道对象的类型。