3 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個贊
如果將其重寫為完全等效的內(nèi)容,會更容易理解
// v───v───v───v───v───v───v───v───v───v───v───v─┬┐
// ││
// v──#1 v─#2 v──#3 v─#4 #5
int const * const Method3(int const * const&) const;
然后從右到左閱讀。
#5表示左側(cè)的整個函數(shù)聲明為const,這表示這一定是成員函數(shù),而不是自由函數(shù)。
#4表示左邊的指針是const(不能更改為指向其他地址)。
#3表示int左側(cè)的是const(不得更改為其他值)。
#2表示左側(cè)的指針是const。
#1表示int的左側(cè)是const。
放在一起,您可以將其作為const名為的成員函數(shù)讀取,該成員函數(shù)Method3引用指向的const指針int const(const int如果需要,可以引用,然后返回const指向int const(const int)的指針)。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
首先const T
等于T const
。
const int* const
因此等于int const * const
。
讀取其中包含許多const
標(biāo)記和指針的表達(dá)式時,請始終嘗試從右到左讀取它們(應(yīng)用上面的轉(zhuǎn)換之后)。因此,在這種情況下,返回值是指向constint
的const指針。在const
這里,使指針本身沒有意義,因?yàn)榉祷刂挡皇强梢孕薷牡淖笾怠?code>const但是,指定為pointee 可以確保調(diào)用方不會修改所返回的int
(或的數(shù)組int
)Method3
。
const int*const&
成為int const*const&
,因此它是對指向const的const指針int
的引用。通過引用傳遞const指針也沒有任何意義-您不能修改引用的值,因?yàn)橹羔槥椋?code>const并且引用和指針占用相等的存儲空間,因此也沒有任何空間節(jié)省。
最后一個const
表示該方法未修改該this
對象。this
方法主體中的指針將具有(理論上的)聲明T const * const this
。這意味著一個const T*
對象將能夠調(diào)用T::Method3()
。
- 3 回答
- 0 關(guān)注
- 438 瀏覽
添加回答
舉報(bào)