私は 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
それぞれの助けに感謝します!