0
我有一个抽象类CAbstract
,并希望在另一个类CClass
中拥有此类成员。如果我把它作为一个指针,我将不得不照顾删除自己,并希望避免这种情况。抽象类成员变量
- 如果我把它作为参考,当
CClass
被删除时它会自动删除吗? - 我可以把它做成
shared_ptr
吗?shared_ptr
可以管理抽象类并指向派生类吗?
我有一个抽象类CAbstract
,并希望在另一个类CClass
中拥有此类成员。如果我把它作为一个指针,我将不得不照顾删除自己,并希望避免这种情况。抽象类成员变量
CClass
被删除时它会自动删除吗?shared_ptr
吗? shared_ptr
可以管理抽象类并指向派生类吗?引用不会自动释放任何东西; shared_ptr
呢。只要遵循C++的规则,它应该优雅地处理继承情况。更具体地说,因为shared_ptr
的析构函数默认在引用计数下降到零时调用delete
,所以需要正确实现(virtual
)析构函数以使shared_ptr
工作。
引用必须引用一些东西。我推荐'shared_ptr'或'unique_ptr'。 –
@JoachimPileborg我将为构造函数提供一个临时参考。 – baruch
这就是你不能在这种情况下使用引用的原因之一。一旦设置参考不能改变。 –