我有4類,C++使在子類中的一類的成員變量的特殊化
類A(摘要),
B類(摘要),(具有作爲成員變量類型的載體,(類A))
C類,類的子類甲
類d,B類的子類
我可以重新定義d類的成員變量是類型的載體(柯樂s C)而不是矢量(A類)。改爲數組會更好嗎?
我有4類,C++使在子類中的一類的成員變量的特殊化
類A(摘要),
B類(摘要),(具有作爲成員變量類型的載體,(類A))
C類,類的子類甲
類d,B類的子類
我可以重新定義d類的成員變量是類型的載體(柯樂s C)而不是矢量(A類)。改爲數組會更好嗎?
不,你不能這樣做。它不起作用,因爲以下情況:
如果B類中的函數向類A(但不是C類)的向量中添加元素,則在基類中允許使用此元素,但對於特定的子類(C),因爲類型已更改。
我可以重新定義類D的成員變量爲類型向量(類C)而不是向量(類A)。
不,你不能。一旦數據成員在基類中聲明,它將以完全相同的形式被所有派生類繼承。
你可以做的是把基類成員爲指針到A
,並初始化要麼指向的A
一個實例,或C
一個實例。
我想,它已經是一個指針或引用,因爲你不能有抽象類的實例。 –
所以我可以有一個指向類A的指針向量,都指向類C? –
因爲C是從A派生出來的,所以你不需要改變向量。在使用它之前,你只需要將其「downcast」到C中。 – Najzero
什麼是你選擇的porpuse?順便說一下,如果* C子類A *,* C *已經是一個* A * .a C對象包含A的每個成員nad方法加上他的成員和方法.. –