是否有可能在子方法中「重用」父方法並添加功能,就像使用Java中的超級運算符一樣?Super for C++?
parent.method(int a){
a++;
}
child.method(int a /*would be nice w/out*/){
printf("%d",a);
}
我知道這可能是一個很基本的問題,對此很抱歉。
順便說一句:我知道我可以將方法複製/粘貼到子類並通過重載在其中添加功能;我正在尋找更方便的方法。
感謝4的幫助
是否有可能在子方法中「重用」父方法並添加功能,就像使用Java中的超級運算符一樣?Super for C++?
parent.method(int a){
a++;
}
child.method(int a /*would be nice w/out*/){
printf("%d",a);
}
我知道這可能是一個很基本的問題,對此很抱歉。
順便說一句:我知道我可以將方法複製/粘貼到子類並通過重載在其中添加功能;我正在尋找更方便的方法。
感謝4的幫助
您可以使用__super要做到這一點,但它是一個Microsoft擴展。
void CChild::function(int nParam)
{
__super::function(nParam);
}
或者你可以顯式調用從派生類中的基本實現:
void CChild::function(int nParam)
{
CParent::function(nParam);
}
您可以通過使用的名稱qualifing成員函數名調用的子成員函數父成員函數父類:
void child::method()
{
parent::method();
}
是的,沒有super
關鍵字,但你只要給父類的名稱來代替。
int child::method(int a){
// call base class
int i = parent::method(a);
printf("%d",a);
}
parent.method(int a){
a++;
}
child::method(int a /*would be nice w/out*/){
printf("%d",a);
parent::method(a);
}
'如果有多重繼承,右__super'將無法正常工作?無論如何,即使微軟提供了一個* super *關鍵字,'CParent :: function'方法也是非常優秀的,而諷刺的是它不是*優越的*。 ;-) – Nawaz 2012-03-27 09:13:58
@Nawaz同意,如果沒有別的,它是一個標準的做法。 ;-) – Konrad 2012-03-27 09:18:37
你可以使用'typedef CParent super;'然後'super :: function(nParam);' – 2012-03-27 10:47:34