在用c++类的时候遇到的问题

1.为什么我这样写,在Base类里声明Person类指针可以,不是指针的就不行。2当我把Person类写在Base类前面两个就都可以。

img

在前置声明时,我们只能使用的就是类的指针和引用(因为引用也是基于指针的实现的)。

class Person;是一种不完整的声明,只要类 Base 中没有执行需要了解类 Person 的大小或者成员的操作,则这样的不完整声明允许声明指向 Person 的指针和引用。

而在你的代码中的语句
Person p;
是需要了解 Person 的大小的,不然是不可能知道如何给类 Base 分配内存大小的,因此不完整的前置声明就不行,可以将 Person 的定义放在头文件中包含进来,不然是不行的。