次のコードがあるとします。
namespace Example1 {
class A {
public:
A() {}
virtual ~A() {}
private:
float data_A;
};
class B {
public:
B() {}
virtual ~B() {}
protected:
float data_B;
};
class Derived : public A, public B {
public:
Derived() {}
virtual ~Derived() {}
protected:
float data_Derived;
};
}
int main (void)
{
using namespace Example1;
B* pb = new Derived;
delete pb;
}
pb
B
オブジェクトの一部を指している必要がありDerived
ます。しかし、派生オブジェクトもから派生しA
、サブオブジェクトがあることを意味しA
ます..そして、クラスが最初にから継承するA
ため、そのサブオブジェクトは「最初」である必要があります。Derived
A
コンパイラはそれをどのように承認しますか? 正しく動作させるために何を追加しますか?
また、オブジェクトを削除するときにメモリを正しく解放するにはどうすればよいですか?