C 函式過載 重寫與重定義

2021-08-23 12:08:24 字數 928 閱讀 5634

程式1:方法的過載

class a

~a(){}

int getmax(int a,int b)//1

double getmax(int a,int b)//2

double getmax(double a,double b)//3

};

上面的程式中,方法1和方法3是函式的過載(引數列表不同);但是方法2不是,因為與方法1比起來只是返回值不同,而返回值不能作為函式過載的判斷,在編譯階段會出錯。

程式2:方法的重定義

上面的程式中,show()是普通的成員函式,子類b重新定義了show(),因此b->show()的結果是「b::show()」。如果b中沒有重新定義show(),那b->show()的結果是「a::show()」。在類的多型中,基類指標c可以指向子類物件,由於show()不是虛函式,因此呼叫show時將執行指標本身的型別的show(),即a::show()。

如果我修改b中show()的返回值型別或者引數列表:

可以看到,show函式是虛函式,並且在a和b中返回值型別、引數列表相同,是重寫,體現了類的多型。而eat函式雖然也是虛函式,但是並沒有呼叫「指向物件的型別」的方法。

C 函式重定義 過載 重寫

c 的重寫,過載,重定義 1.重寫 override 又稱覆蓋 父類與子類之間的多型性。子類重新定義父類中有相同名稱和引數的虛函式。1 被重寫的函式不能是 static 的。必須是 virtual 的,或者是 override 的 即函式在最原始的基類中被宣告為 virtual c 中沒有 over...

C 函式過載 重寫 重定義

c 中經常會提到過載,除了過載,還有重寫,重定義,下面對這三個概念逐一進行區分 1 過載 函式過載是同一定義域中 即同乙個類中 的同名函式,但形參的個數必須不同,包括引數個數,型別和順序,不能僅通過返回值型別的不同來過載函式 include using namespace std class box...

C 過載重寫重定義

includeusing namespace std 函式過載 必須在同乙個類中進行 子類無法過載父類的函式,父類同名函式將被名稱覆蓋 過載是在編譯期間根據引數型別和個數決定函式呼叫 函式重寫 必須發生於父類和子類之間 並且父類和子類中的函式必須有完全相同的原型 使用virtual宣告之後能夠產生多...