在C++中,常量成員函數(shù)(const member function)不能被重載。常量成員函數(shù)表示該函數(shù)不會(huì)修改類的任何成員變量(除了那些被聲明為mutable的)。由于它們保證不會(huì)改變對(duì)象的狀態(tài),因此不能有兩個(gè)具有相同名稱和參數(shù)列表的常量成員函數(shù)。
然而,你可以使用不同的參數(shù)類型或數(shù)量來創(chuàng)建類似功能的非常量成員函數(shù)和常量成員函數(shù)。這樣,編譯器可以根據(jù)傳遞的參數(shù)自動(dòng)選擇正確的函數(shù)版本。例如:
class MyClass {
public:
void foo(int x) {
// 非const成員函數(shù)實(shí)現(xiàn)
}
void foo(int x, int y) const {
// const成員函數(shù)實(shí)現(xiàn)
}
};
在這個(gè)例子中,foo
函數(shù)被重載了,一個(gè)版本接受一個(gè)整數(shù)參數(shù)(非const版本),另一個(gè)版本接受兩個(gè)整數(shù)參數(shù)(const版本)。