c++ (持有对方引用)设计模式

在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)

}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值