常成員函式和非常成員函式之間的過載
首先先回憶一下常成員函式
宣告:《型別標誌符》函式名(參數列)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 過載的問題,這裡我又重新看了一下,做了乙個簡單的分析也可能有不對的地方,歡迎討論。所謂過載,是指允許存在多個同名函式,而這些函式的參數列不同,即函式名相同但函式的簽名不同。過載並不...