在java中有一种设计模式叫做持有对方的引用。
但是在c++ 中有功能更加强大的指针。使得这种设计模式算不得上是一种设计模式。
我们来看看如何使用。
首先我们来看一种现象
假设有A类和B类
如果A里面有B对象类型的成员变量
而B里面又有A类型的成员变量
那么就会在实例化一个A对象的时候,调用B的构造函数,在调用B的构造函数的时候又会调用A的构造函数。那么这就是一种死循环。
那我又确实是需要这种设计,怎么办?
这时候指针就变得非常的强大起来。(当然不用指针也可以,可以参看java的持有对方引用设计模式)
只需要在A里面有一个B类型的指针,在B里面有一个A类型的指针。
当然,在这样做了之后并不是说就万事大吉了。
A的构造函数和B的构造函数不能同时调用对方的构造函数。
如果都不调用对方的构造函数,那么这样也是可以的,只要有set方法。以这样可以达到目的。
但是简单的方法是
在A里面new B,在B的构造方法里面,将参数设置为(A*).
A()
{
new B(this)
}