读书人

关于对象自身引用的初级有关问题

发布时间: 2012-03-16 16:34:56 作者: rapoo

关于对象自身引用的初级问题
class A {
int x;
A &a;
};

这种类的几个构造函数该怎么写,特别是默认的构造函数A()怎么写。
A(){};//总编译错:uninitialized reference member

A(int xx, A &aa): x(xx), a(aa){};
//这么写的话,aa要怎么传参呢(怎么构造实参aa)?

实在糊涂, C++ primer 4th 可以用对象自身引用, 可是我不会些构造函数!

[解决办法]
可以是一回事,有什么实际用途又是一回事。
自己引用自己没有任何实际用途。不要这么做!
[解决办法]
class A {
int x;
A &a;

public :
A():a(*this){}
A(int x, A& aa):x(x),a(aa){}
};


[解决办法]
void main()
{

A a1;
A a2(1, a1);

}
[解决办法]
A():a(*this){}

使用初始化成员列表即可。
[解决办法]
这么做的目的是?
就是随便写写的么??

考虑一下代码的“实用性”
[解决办法]
星辰老大 又跟我抢分 :(
[解决办法]
class A{
static A& a;
public:
A(){};
...
};
类引用自身须是static方式,目的取消类的基类独立性,禁止派生类。
典型的设计有Time类。
非静态引用没有实际意义。

[解决办法]
修整一下,是防止类的抽象化
[解决办法]
static方式是不是也可以当作singleton的实现?

读书人网 >C++

热点推荐