次のコードがあるとします。
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;
}
pbBオブジェクトの一部を指している必要がありDerivedます。しかし、派生オブジェクトもから派生しA、サブオブジェクトがあることを意味しAます..そして、クラスが最初にから継承するAため、そのサブオブジェクトは「最初」である必要があります。DerivedA
コンパイラはそれをどのように承認しますか? 正しく動作させるために何を追加しますか?
また、オブジェクトを削除するときにメモリを正しく解放するにはどうすればよいですか?