上课随堂 --01
上节课老师当堂叫我们手写一些很奇怪的东西,一脸蒙蔽,然后这节课老师讲解了题目,也有所了解。
题目的大意很奇葩,就是要定义一个类x,里面有一个指向另一个类y的指针,而y中含有一个x的成员。
代码:
class y; //必须先声明一个y类,不然x里面的指针不懂要指向的y是什么。
class x
{
y *p;
};
class y
{
x p1;
};
当然有人说可不可以这样呢
class x;
class y
{
x p;
};
class x
{
y *p1;
};
答案是不可以的,因为开辟空间的时候,指针就是固定的指针的大小,所以像第一种那样写是没问题的,但是第二种由于类x的大小不知道多大,这时候编译器就会疑问,到底要开多大的空间,这时候就会出错。