#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;
class A {
public:
A () {cout<<" A\n";}
virtual ~A () {cout<<" ~A\n";}
};
class B : public A {
public:
B () :A() {cout<<" B\n";}
virtual ~B() {cout<<" ~B\n";}
};
int main (int, char *[]) {
A *ap = new B;
delete ap;
A b = *ap;
return 0;
}
出力は次のとおりです。
A
B
~B
~A
A の最後のデストラクタが A に対して呼び出されるのはなぜですか b = *ap A のコンストラクタがここで呼び出されないのはなぜですか?
ありがとう !!!