2012-12-03 132 views
0

我有一个抽象类CAbstract,并希望在另一个类CClass中拥有此类成员。如果我把它作为一个指针,我将不得不照顾删除自己,并希望避免这种情况。抽象类成员变量

  • 如果我把它作为参考,当CClass被删除时它会自动删除吗?
  • 我可以把它做成shared_ptr吗? shared_ptr可以管理抽象类并指向派生类吗?
+0

引用必须引用一些东西。我推荐'shared_ptr'或'unique_ptr'。 –

+0

@JoachimPileborg我将为构造函数提供一个临时参考。 – baruch

+0

这就是你不能在这种情况下使用引用的原因之一。一旦设置参考不能改变。 –

回答

3

引用不会自动释放任何东西; shared_ptr呢。只要遵循C++的规则,它应该优雅地处理继承情况。更具体地说,因为shared_ptr的析构函数默认在引用计数下降到零时调用delete,所以需要正确实现(virtual)析构函数以使shared_ptr工作。