提个有关问题.在类中有自身类成员/自身类的参数 的理解
提个问题...在类中有自身类成员/自身类的参数 的理解比如在 class A{public:A(){}A afunciton(A param)}
提个问题...在类中有自身类成员/自身类的参数 的理解
比如在
class A
{
public:
A(){}
A a;
funciton(A param);
}
像上面的在A类有自身类a成员,和自身类param参数,,,他的构造函数是怎么实例化一个A对象的??
想上面的声明,很容易想到在函数内调用自身函数,导致死循环....
请求大家讲解下...XX
[解决办法]
不允许这样定义,如果允许的话,就如LZ所说,这样会导致栈耗尽。通常是这样定义的:
class A
{
public:
A(){}
A *a;
funciton(A param);
};
[解决办法]这样定义通不过,因为当编译器看到类A里面的成员A a; 时,需要知道class A的全部细节才能知道如何构造这个a,但是到这个成员为止,类A的定义还没有结束,下面有什么成员还不知道,因此编译器就不知道该怎么构造出a来——分配多少空间?含有多少成员?
[解决办法]这样定义通不过,因为当编译器看到类A里面的成员A a; 时,需要知道class A的全部细节才能知道如何构造这个a,但是到这个成员为止,类A的定义还没有结束,下面有什么成员还不知道,因此编译器就不知道该怎么构造出a来——分配多少空间?含有多少成员?
[解决办法]A *a;这边的a是指针。。编译器给它分配一个指针大小就可以了。。
A a;这边a是一个A的对象。。编译器要给它分配一个A大小。。所以编译器要知道A有哪些成员之类信息