C++
在类的内部使用该类:
[code=c++]
class A
{
private: A b;
int c;
};
A abc;
[/code]
像这样,变量adc在实例的时候内存计算(一层层迭代,无穷无尽)后岂不是无穷大了?有或不能这样用?
希望有人帮本人解答这个疑问
在类的内部使用该类:
[code=c++]
class A
{
private: A b;
int c;
};
A abc;
[/code]
像这样,变量adc在实例的时候内存计算(一层层迭代,无穷无尽)后岂不是无穷大了?有或不能这样用?
希望有人帮本人解答这个疑问
解决方案
15
这是不允许的。
9.2 Class Members
2 A class is considered a completely-defined object type (3.9) (or complete type) at the closing } of the
class-specifier. Within the class member-specification, the class is regarded as complete within function
bodies, default arguments, exception-specifications, and brace-or-equal-initializers for non-static data members (including such things in nested classes). Otherwise it is regarded as incomplete within its own class
member-specification.
10 Non-static (9.4) data members shall not have incomplete types. In particular, a class C shall not contain
a non-static member of class C, but it can contain a pointer or reference to an object of class C.
9.2 Class Members
2 A class is considered a completely-defined object type (3.9) (or complete type) at the closing } of the
class-specifier. Within the class member-specification, the class is regarded as complete within function
bodies, default arguments, exception-specifications, and brace-or-equal-initializers for non-static data members (including such things in nested classes). Otherwise it is regarded as incomplete within its own class
member-specification.
10 Non-static (9.4) data members shall not have incomplete types. In particular, a class C shall not contain
a non-static member of class C, but it can contain a pointer or reference to an object of class C.
5
无限递归构造会死的,编译器也能检查出来,报错
10
类中不能申明该类的变量,否则你不能通过编译,但可以声明该类指针型变量
15
c++编译器已经考虑到这个无限递归的问题了,所以它根本不允许这种语法的出现,下图就是本人测试的结果: