众所周知,为了避免内存泄漏,我们最好使用 SmartPtr 来管理对象,而不是使用普通指针。
在大多数情况下,它工作得很好。
现在我遇到一个问题,我尽量把它描述得更简单。
我有一个基类:
class Base;
我从基类继承了另外两个类:
class Derive1 : public Base;
class Derive2 : public Base;
如果我使用原始指针,我可以很容易地实现多态;</p>
Base *pd1 = new Derive1();
Base *pd2 = new Derive2();
但是如果我想用它smartPtr
来实现同样的事情我应该怎么做呢?例如:
SmartPtr<Base> pd1 = SmartPtr<Derive1>(new Derive1);
有没有smartPtr
支持转换,还是需要自己实现一个模板smartPtr
,但是如果我自己实现模板,如何避免代码臃肿,谁有好的建议?
如果有模板 smartPtr 支持这个操作,它是如何完成这个功能的呢?正如我们所知,基指针可以指向派生对象,但反过来又不好!!