2012-01-25 28 views
2

比方說,我們有以下幾點:添加行爲,多態對象

abstract class A; 

class B : public A; 
class C : public A; 
.... 

class Main; 

類主要是利用A,B和C
類,我們在類主一下面的代碼:

A obj; 
.... 
for(i = 0; i< count; ++i) 
{ 
    obj->Abstract_Function_In_A();   
} 

我想改變Abstract_Function_In_A()A類採取參數。
問題是,在基類中添加任何新的功能意味着
我必須在所有子類中實現新功能,即使有些不使用它們。

否則,它在調用時可能無法按預期工作。

有沒有人知道一個方法,以便我可以添加新的功能,而無需在所有的子類中定義它們?

+1

如果有人在未實現它們的類的實例上調用新函數,您希望發生什麼? –

+0

聽起來像你不想要多態性給我。 – Pubby

+0

@DavidSchwartz,我不希望沒有實現它們的類能夠訪問新的函數。 – CaseOfInsanity

回答

1

聽起來你不希望類A是抽象的,只需在類A中定義「默認」函數(實現和接口)。在繼承樹下面覆蓋該函數的類將獲得它們的特定行爲,沒有得到默認的類。

+0

感謝您的回答 – CaseOfInsanity

+0

請記住,抽象基類可以混合使用虛函數和純虛函數。 –