为什么结构不能包含自身的实例?

Lea*_*ner 4 c++ structure

我读到了c ++中的结构,它不能包含自身的实例.任何人都可以帮助我理解为什么它不能包含自身的实例?

Ale*_*x Z 8

因为它会占用"无限"存储,因为它在初始化时会以递归方式初始化自身.但是,您可以存储指向同一结构的指针.

这是无效的:

struct a
{
    int someVar;
    a bad;
};
Run Code Online (Sandbox Code Playgroud)

这是有效的(如果你想要这个结构的链表):

struct a
{
    int someVar;
    a* good;
};
Run Code Online (Sandbox Code Playgroud)


ami*_*mit 6

因为要创建它的实例,您需要创建变量,它本身就是它的一个实例 - 它将调用构造函数.

这将导致对构造函数的无限递归调用.

假设class A有一个名为的实例变量a:
调用构造函数A将导致初始化a,这本身就是一个A.要做到这一点 - A将再次调用构造函数.

请注意,它甚至不会编译,因为编译器无法为其分配内存,它不知道为每个对象分配多少空间.存储实例变量需要多少空间a?[任何有限的空间都不够,因为总会有一个额外的变量,也需要分配]


fre*_*low 5

struct bedroom
{
    bed b;
    table t;
    bedroom r;
};
Run Code Online (Sandbox Code Playgroud)

你现在看到了问题吗?卧室需要存放无限量的床和桌子.

  • 你在卧室的桌子上做什么? (3认同)