c 過載與重寫的區別

2022-09-22 17:53:59 字數 700 閱讀 3533

過載:是指在同一個作用域內(比如一個類內部),函式根據引數型別或者引數個數等有關函式引數的差異宣告不同函式,不能只根據函式返回值過載函式,如:

class base 

virtual void function2()

int function3(int arg1, int arg2)

int function3(char ch1, char ch2)

};

function3屬於過載函式,雖然有兩個function3但是兩個函式引數型別不同。

重寫:是有關多型的一種型別,子類重寫父類的虛擬函式,如:

class base 

virtual void function2()

};class child : public base

virtual void function2()

};

child類的function2重寫父類base的function2.

所以具體區別可以總結為:

(1)範圍區別:過載和被過載的函式在同一類中,重寫和被重寫的函式在不同的類中。

(2)引數區別:過載和被過載的函式引數列表一定不同,重寫與被重寫的函式引數列表一定相同。

(3)virtual的區別:過載函式和被過載函式可以被virtual修飾,也可以沒有,重寫的基類必須要有virtual修飾。