0

私は 2 つのクラスを持っていBますA

へのポインタを作成しました。これAは と呼ばれますa2。私の機能を見てくださいmain

この行は何をしますか?

a2 = new B();

を削除するa2と、A のデストラクタだけがアクティブになるのはなぜですか?

#include <iostream>
using namespace std;

class A {
    int num;
  public:
    A() { cout << "constructor of A\n"; }
    void set_num(int new_num) { cout << "set_num of A" << endl; num = new_num; }
    void print() { cout << "print of A: ";  cout << num << endl; }
    ~A() { cout << "destructor of A\n"; }
};

class B: public A {
    int num;
  public:
    B() { cout << "constructor of B\n"; }
    void set_num(int new_num) { cout << "set_num of B" << endl; num = new_num; }
    void print() { cout << "print of B: ";  cout << num << endl; }
    ~B() { cout << "destructor of B\n"; }
};

void main() {
    A *a2;
    a2 = new B();
    delete a2;
}

これは出力です:

constructor of A
constructor of B
destructor of A

それぞれの助けに感謝します!

4

3 に答える 3