关于对象自身引用的初级问题
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的实现?