c++並沒有要求基類的每個虛函數都要在派生類中實現,但是有些時候我們把基類的這些虛函數都
在派生類中描述一下(方便使用者查看),但是一旦我們把虛函數聲明出來,那就意味着我們做了
重載動作,此時就逼得我們不得不寫出自己的虛函數重載版本,但是很多時候我們還是想使用基類
版本,那麼此時就有兩種方案:
方案一:
1)在派生類的重載版本中使用域訪問運算符調用基類版本
class A{
virtual void func(){
}
virtual void func(int){
}
}
class B:public A{
void func(){
A::func();
}
void func(int i){
A::func(i);
}
}
可以看到,如果基類虛函數有N個,那麼派生類就要寫N次,這明顯很囉嗦,2)便可以
使用大粒度的控制來進行粗糙的批量映射。
方案二:
2)使用using來進行說明
class A{
virtual void func(){
}
virtual void func(int){
}
}
class B:public A{
using A::func; //注意,這裏僅僅是函數名
//這一個動作就代表所有名爲func的虛函數都
//使用基類版本,相當於創建了一個 “軟連接”
//然而使用時還是要根據參數列表來判斷使用基類的哪個版本
}