這個問題在這里已經有了答案: C 成員函式隱藏的原因 [重復] (4 個答案) 3 天前關閉。
我無法弄清楚為什么這個程式有效。我是根據我的筆記(OOPP 和課程)寫的,但我不明白它到底是如何作業的?我將不勝感激任何幫助!
這是代碼:
#include <iomanip>
#include <iostream>
using namespace std;
class Base{
public:
void f(int) {std::cout<<"i";}
};
class Derived:Base{
public:
void f(double){std::cout<<"d";}
};
int main(){
Derived d;
int i=0;
d.f(i);
}
我已經嘗試制作 cout 陳述句來向我展示所有內容是如何傳遞和運行的,但它不允許我進行任何操作。
uj5u.com熱心網友回復:
這個程式定義了一個名為 Base 的類,它有一個名為 f 的成員函式,它接受一個 int 引數。它還定義了一個名為 Derived 的類,該類繼承自 Base 并具有一個名為 f 的成員函式,該函式采用雙引數。
在主函式中,創建了一個 Derived 型別的物件,并將一個 int 變數初始化為 0。然后在 Derived 物件上呼叫成員函式 f,將 int 變數作為引數傳入。
當在 Derived 物件上呼叫成員函式 f 時,編譯器會在 Derived 類中查找匹配的函式簽名。由于Derived類中有一個同名函式和引數串列,所以呼叫了那個函式。Derived類中的函式列印出一個“d”,表示被呼叫了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537171.html
標籤:C 班级C 11派生类
