子類函式覆蓋

2021-06-27 09:19:47 字數 713 閱讀 2247

#include

#include

using std::cout ;

class base

void testfunction()

};class derived : public base

int main()

void testfunction() };

class derived : public base

}; int main()

輸出:base

derived

指向子類derived的父類指標b呼叫了父類的base::testfunction,指向子類derived的子類指標d呼叫了子類derived::testfunction,說明非虛函式不具有多型性

#include

#include

using namespace std;

class base

void testfunction()

private:

virtual void sayhello() };

class derived : public base

private:

virtual void sayhello() };

int main()

輸出:derived

derived

說明private的虛函式可以有多型。

子類函式對父類同名函式的覆蓋

先看一道題 class b void f double const class d public b int main 答案 3個呼叫全部呼叫子類的f void 但由於後兩個不能轉換為void 編譯出錯。void 是可以指向任何型別的指標。c 中,只有int 0可以轉換為指標型,其餘均不可以,所以出...

C 子類函式對父類同名函式的覆蓋

class b public void f int const cout b.int endl void f double const cout b.double endl class d public b public void f void const cout d.void endl int ...

C 子類父類成員函式的覆蓋和隱藏例項詳解

函式的覆蓋 覆蓋發生的條件 1 基類必須是虛函式 使用virtual 關鍵字來進行宣告 2 發生覆蓋的兩個函式分別位於派生類和基類 3 函式名和引數列表必須完全相同 函式的隱藏 隱藏發生的條件 1 子類和父類的函式名相同,引數列表可以不一樣 看完下面的例子就明白了 include iostream ...