我有疑問,用C++重新定義。我在Derived類中分配內存,所以我需要這個內存在Base類中保留。所以,我需要考慮基類中的屬性與Derived類中的屬性相同,我不知道在C++中是可能的。覆蓋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的兩個分支中的兩個不同的類Base,每個分支都有一個相同的測試(派生一個主代碼)。
在這個類Base中,我有這個屬性,在另一個類Base中,我沒有這個屬性,所以我必須把它放在Derived類中進行編譯。
我不希望得把兩個不同的測試代碼,所以我需要重寫屬性
您只需要在基類中聲明該變量。派生類應該使用基類的變量。 –
如果這對你有用,你應該在'Base'中放置'std :: vector',然後在'Derived :: reset()'中放置'resize(256)'。在每個班級中你不需要兩個'float * a'。目前,您不需要在'Base'中將'a'設置爲'nullptr',也不需要使用拷貝構造函數,賦值或析構函數來管理'a'的生命週期:內存總是被泄漏。一個'vector'會更容易,更安全。指針的'printf()'格式爲'%p'。 –
我真的需要做陰影,因爲這是我真正的問題的一個例子。我在兩個不同的CVS分支中爲兩個不同的類Base創建了相同的測試(派生一個主代碼)。在這個類Base中,我有這個屬性,在另一個類Base中我沒有這個屬性,所以我必須把它放在Derived類中進行編譯。我想不做兩個不同的測試代碼 – user3480234