我知道一个班级不能有同一班级的成员,例如
class Sample {
int a = 0;
Sample s; // error, object would need infinite size
};
但是,有指针怎么会好呢?
class Sample {
// this compiles, but isn't it essentially the same
// as above?
Sample() { s = new Sample(); }
int a = 0;
Sample *s;
};
允许将指针作为成员,因为指针的大小是固定的(32位应用程序中为4字节,64位应用程序中为8字节),因此编译器可以Sample
在编译时知道的完整大小,而不必依赖于指针在运行时指向。
Sample
在Sample
构造函数内部创建实例不是语法错误,因此编译器允许这样做,但是它将在运行时导致无限递归循环。所以不要这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句