提问者:小点点

如何将析构函数与继承一起使用?


假设我有对象:bob1,cob2。我想为类B和C建立一个析构函数,但我不确定如何销毁B.BB和C.CC以及如何访问它们。还有,有没有办法让我做到这一点,而不让类成为a类的朋友?

class A
{
protected:
   int a, aa;
public:
   A();
   A(int a, int aa);
   ~A();
   friend class B;
   friend class C;
};
class B
{
protected:
   int b;
   A bb;
public:
   B();
   A(int b, A bb);
   ~B();
};
class C: class B
{
private:
   int c;
   A cc;
public:
   C();
   C(int c, A cc);
   ~C();
  };

共2个答案

匿名用户

你不知道。它们会自动被摧毁。为此不需要朋友

匿名用户

一旦使用继承,析构函数就应该是虚拟的:

class B
{
    ...
public:
   B();
   A(int b, A bb);
   virtual ~B();
};