Handle类

来源:互联网 发布:python 自学 编辑:程序博客网 时间:2024/05/21 10:21

 

代理类的由来:

将容器和继承公用时,需要控制内存分配和把不同对象放入同一容器中;

 

如何定义代理类?

 

根据需要复制对象的方法:

基类中定义虚函数Base_class* copy()/clone(),同时记住定义虚析构函数

 

用类表示概念 解决显示分配内存的操作

 

每个代理都表示一个继承自基类的对象,只要代理关联某个对象,他就一定存在

 

 

Handle类(智能指针) 允许在保持代理的多态行为的同时,还可以避免不必要的复制。

 

这次先将类绑定到句柄类。

绕开operator->() 就必须为handle类提供绑定类的操作。

 

添加引用计数的两种方式:

 

1 新定义一个类来容纳一个引用计数和一个绑定类对象。

上面这种方式的缺点:

为了把句柄绑定到类T的对象上,必须定义一个具有类T成员的新类,

当把句柄绑定到一个继承自T的未知类对象时,就出现了问题。

 

2 将计数与其对象本身分离开,在句柄类中加上指向计数的指针。

 

当我们考虑改动性函数时,必须作出决定,到底我们的句柄需要值语义还是指针语义。

于是借助写诗复制技术.

 

 

原创粉丝点击