C 中const用於函式過載的用法

2021-10-09 20:41:42 字數 2300 閱讀 2758

常成員函式和非常成員函式之間的過載

首先先回憶一下常成員函式

宣告:《型別標誌符》函式名(參數列)const;

說明:

(1)const是函式型別的一部分,在實現部分也要帶該關鍵字。

(2)const關鍵字可以用於對過載函式的區分。

(3)常成員函式不能更新類的成員變數,也不能呼叫該類中沒有用const修飾的成員函式,只能呼叫常成員函式。

(4)非常量物件也可以呼叫常成員函式,但是如果有過載的非常成員函式則會呼叫非常成員函式

#include

using namespace std;

class test

void fun() const

void fun()

};

int main()

結果成功執行

const修飾成員函式時的過載

分兩種情況,一種情況下不允許過載,另一種允許。

#include

using namespace std;

void fun(const int i)  //不允許

void fun(int i)

int main()

結果:編譯錯誤,重定義

void fun(int a)和

void fun(const int a);

實際上沒有區別,因為函式呼叫的時候,存在形實結合的過程,所以不管有沒有const都不會改變實參的值。

#include

using namespace std;

void fun(char *a)

void fun(const char *a)  //指標指向const ,允許過載

int main()

成功編譯並允許

#include

using namespace std;

void fun(char *a)

void fun(char * const a)

int main()

結果:編譯不通過,重定義

總結

#include

using namespace std;

void fun(const int &i)

void fun(int &i)

int main()

結果:成功編譯執行

C 中const用於函式過載

首先先回憶一下常成員函式 宣告 型別標誌符 函式名 參數列 const 說明 1 const是函式型別的一部分,在實現部分也要帶該關鍵字。2 const關鍵字可以用於對過載函式的區分。3 常成員函式不能更新類的成員變數,也不能呼叫該類中沒有用const修飾的成員函式,只能呼叫常成員函式。4 非常量物...

在c 中用const函式過載

今天寫作業是遇到需要呼叫const物件中的函式,因為是const,所以成員函式無法訪問,需要進行過載 nodeiteratorbegin 如上所示的函式,我需要在const情況下呼叫,正確的寫法 nodeiteratorbegin const之前網上查到的規則是 c 函式過載 1 函式名稱必須相同。...

深入理解C 函式過載const

書上和網上在很多地方都對const 的過載做了一些解釋,但感覺都不是很詳細。還有很多同學在不同的地方發問關於const 過載的問題,這裡我又重新看了一下,做了乙個簡單的分析也可能有不對的地方,歡迎討論。所謂過載,是指允許存在多個同名函式,而這些函式的參數列不同,即函式名相同但函式的簽名不同。過載並不...