在c 中用const函式過載

2022-07-09 23:15:10 字數 431 閱讀 9332

今天寫作業是遇到需要呼叫const物件中的函式,因為是const,所以成員函式無法訪問,需要進行過載

nodeiteratorbegin()
如上所示的函式,我需要在const情況下呼叫,

正確的寫法:

nodeiteratorbegin() const
之前網上查到的規則是:

c++函式過載

1、函式名稱必須相同。

2、引數列表必須不同(個數不同、型別不同、引數排列順序不同等)。

3、函式的返回型別可以相同也可以不相同。

4、僅僅返回型別不同不足以成為函式的過載。

一直以為僅僅新增const不足以進行過載,沒想到是可以的。

關於更多const在函式過載中的細節,下面這個老哥的部落格寫的非常詳細,我就不重複了:

C 中const用於函式過載

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

const 和 非const函式過載

在下面的 中a1呼叫const版本,a2呼叫非const版本。const a a1 a a2 a1.x a2.x 後面加const表示在該函式中不能對類的資料成員進行改變,比如 class a 這可以 int x const 當然有特殊情況,就是用mutable關鍵字修飾過的成員變數可以在宣告為co...

函式過載之const

我們知道,如果函式名相同,在相同的作用域內,其引數型別 引數個數,引數順序不同等能構成函式過載。有趣的是如果同時在類中,對於函式名相同的const函式和非const函式能夠構成過載,同時它們被呼叫的時機為 如果定義的物件是常物件,則呼叫的是const成員函式,如果定義的物件是非常物件,則呼叫過載的非...