读书人

提个有关问题.在类中有自身类成员/自身

发布时间: 2013-01-07 10:02:25 作者: rapoo

提个问题...在类中有自身类成员/自身类的参数 的理解
比如在
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来——分配多少空间?含有多少成员?
[解决办法]
引用:
1

引用:
不允许这样定义,如果允许的话,就如LZ所说,这样会导致栈耗尽。通常是这样定义的:

C/C++ code

class A
{
public:
A(){}
A *a;
funciton(A param);
};


那为什么这个可以?

A *a;这边的a是指针。。编译器给它分配一个指针大小就可以了。。
A a;这边a是一个A的对象。。编译器要给它分配一个A大小。。所以编译器要知道A有哪些成员之类信息

读书人网 >C++

热点推荐