C++ 抽象类成员变量

C++ 抽象类成员变量,c++,C++,我有一个抽象类,CAbstract,并且希望在另一个类,CClass中有一个这种类型的成员。若我让它成为一个指针,我将不得不注意删除我自己,我希望避免这种情况 如果我把它作为一个引用,当CClass被删除时,它会被自动删除吗 我可以把它变成一个共享的\u ptr?shared\u ptr可以管理抽象类并指向派生类吗 引用不会自动取消分配任何内容共享\u ptr执行。只要遵循C++的规则,就应该优雅地处理继承情况。更具体地说,由于当引用计数降至零时,shared\u ptr的析构函数在默认情况下

我有一个抽象类,
CAbstract
,并且希望在另一个类,
CClass
中有一个这种类型的成员。若我让它成为一个指针,我将不得不注意删除我自己,我希望避免这种情况

  • 如果我把它作为一个引用,当
    CClass
    被删除时,它会被自动删除吗
  • 我可以把它变成一个
    共享的\u ptr
    shared\u ptr
    可以管理抽象类并指向派生类吗

    • 引用不会自动取消分配任何内容<代码>共享\u ptr执行。只要遵循C++的规则,就应该优雅地处理继承情况。更具体地说,由于当引用计数降至零时,
      shared\u ptr
      的析构函数在默认情况下调用
      delete
      ,因此需要正确实现(
      virtual
      )析构函数,以使
      shared\u ptr
      工作。

      引用不会自动解除分配任何内容<代码>共享\u ptr执行。只要遵循C++的规则,就应该优雅地处理继承情况。更具体地说,由于当引用计数降至零时,
      shared\u ptr
      的析构函数在默认情况下调用
      delete
      ,因此需要正确实现(
      virtual
      )析构函数,以使
      shared\u ptr
      工作。

      引用必须引用某些内容。我建议
      shared\u ptr
      unique\u ptr
      @JoachimPileborg我打算为构造函数提供一个临时引用。这就是在这种情况下不能使用引用的原因之一。一旦设置了引用,就不能更改。@JoachimPileborg我不想更改它。它将被提供给
      CClass
      的构造函数,然后在
      CClass
      的整个生命周期内保持不变,引用必须引用某些内容。我建议
      shared\u ptr
      unique\u ptr
      @JoachimPileborg我打算为构造函数提供一个临时引用。这就是在这种情况下不能使用引用的原因之一。一旦设置了引用,就不能更改。@JoachimPileborg我不想更改它。它将提供给
      CClass
      的构造函数,然后在
      CClass