這可能是一個noob問題,對此很抱歉。我最近遇到了一個奇怪的問題,試圖在C++,函數重載和繼承中混淆一些高級的東西。在繼承類中的函數重載的C++問題
我會舉一個簡單的例子來說明問題;
有兩類,classA
和classB
,如下所示;
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
據我所知classB
現在應該posses 2個func(..)
功能,由於超載不同的參數。
但是,當在主要方法中嘗試此操作時,
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here's the problem!
return 0;
}
它給出錯誤的方法void func(char[]){};
這是在超類,classA
,是不是INT派生類,classB
可見。
我該如何克服這個問題?這不是在C++中如何重載?我是新來的C++,但在Java中,我知道我可以使用這樣的東西。
雖然我已經找到this thread其中有類似的問題,但我認爲這兩種情況是不同的。
感謝您的回答+鏈接。我想知道C++人是否故意保存這個東西。有沒有優點?它感覺對我來說破壞了繼承的想法,不是嗎? – Anubis
@Anubis,這只是重載解析的規則和「using」聲明的目的。 – chris