C++の再定義には疑問があります。Derived クラスでメモリを割り当てるので、このメモリは Base クラスで予約する必要があります。したがって、基本クラスの属性は派生クラスの属性と同じであると考える必要がありますが、C ++でそれが可能かどうかはわかりません。
class Base {
protected:
float * a;
Base() {}
public:
virtual void reset() {
a = 0;
}
virtual void exec() {
printf("Memory a: %x\n",a);
}
};
class Derivada: virtual public Base {
protected:
float * a;
Derivada() {}
virtual void reset() {
a = new float[256];
}
};
int main() {
Derivada *hija= new Derivada();
hija->reset();
hija->exec();
delete hija;
}
それは私の本当の問題の例であるため、私は本当にオーバーロードを行う必要があります。CVS の 2 つのブランチの、各ブランチに 1 つずつ、2 つの異なるクラス Base に対して、同じテスト (メイン コードの派生) があります。
このクラスBaseの1つにはこの属性があり、他のクラスBaseにはこの属性がないため、コンパイルのためにDerivedクラスに配置する必要があります。
2 つの異なるテスト コードを作成する必要がないため、属性をオーバーライドする必要があります。