const是函式簽名

2021-10-12 17:54:16 字數 819 閱讀 9203

首先要理解什麼是函式簽名。

c++中的函式簽名(function signature):包含了乙個函式的資訊,包括函式名、引數型別、引數個數、順序以及它所在的類和命名空間。普通函式簽名並不包含函式返回值部分,如果兩個函式僅僅只有函式返回值不同,那麼系統是無法區分這兩個函式的,此時編譯器會提示語法錯誤。函式簽名用於識別不同的函式,函式的名字只是函式簽名的一部分。在編譯器及鏈結器處理符號時,使用某種名稱修飾的方法,使得每個函式簽名對應乙個修飾後名稱(decorated name)。編譯器在將c++源**編譯成目標檔案時,會將函式和變數的名字進行修飾,形成符號名,也就是說,c++的源**編譯後的目標檔案中所使用的符號名是相應的函式和變數的修飾後名稱。c++編譯器和鏈結器都使用符號來識別和處理函式和變數,所以對於不同函式簽名的函式,即使函式名相同,編譯器和鏈結器都認為它們是不同的函式。不同的編譯器廠商的名稱修飾方法可能不同,所以不同的編譯器對於同乙個函式簽名可能對應不同的修飾後名稱。

const函式在末尾時,const是函式簽名的一部分。此時,宣告乙個成員函式的時候用const關鍵字是用來說明這個函式是 "唯讀(read-only)"函式,也就是說明這個函式不會修改任何資料成員(object)。 為了宣告乙個const成員函式, 把const關鍵字放在函式括號的後面。宣告和定義的時候都應該放const關鍵字。任何不會修改資料成員的函式都應該宣告為const型別。如果在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤,這無疑會提高程式的健壯性。同樣,如果把不改變資料成員的函式都加上const關鍵字進行標識,顯然,可提高程式的可讀性,一看就知道這個函式的大概功能。

也就是說此時const的作用是區分唯讀操作和賦值操作。

const物件和const函式

當乙個類的函式的參數列不同時,能過載函式,當函式的const性不同時,也能過載函式。如下所示 include a.h 定義了ca類 class cbigclass const ca getvalue const ca getvalue private ca m value 客戶端 如下 ca ca ...

this指標?const函式?const物件成員?

includeusing namespace std class coordinate coordinate void setnum int x coordinate void setnum int x const cout yes 答案是可以的,我感覺這是因為這是一種許可權大到許可權小的改變 也就...

函式引數是指標 OR 引用?該不該加const

1.指標可以在任何時候被初始化,引用在建立時必須初始化。2.一旦引用被初始化為乙個物件,就不能被指向到另乙個物件。指標可以在任何時候指向到另乙個物件。3.不存在空引用。引用必須連線到一塊合法的記憶體。4.無論傳值還是傳指標,函式都會生成乙個臨時變數,但傳引用時,不會生成臨時變數。引用並不產生物件的 ...