我知道一个类(class)不能有同一类(class)的成员,例如
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
的实例不是语法错误,因此编译器允许这样做,但会在运行时导致无限递归循环。所以不要这样做。
关于c++ - 在 C++ 中,一个类是否可以包含指向在构造函数中初始化的同一类的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49061380/