3 回答

TA貢獻1793條經驗 獲得超6個贊
如果將其重寫為完全等效的內容,會更容易理解
// 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表示左側的整個函數聲明為const,這表示這一定是成員函數,而不是自由函數。
#4表示左邊的指針是const(不能更改為指向其他地址)。
#3表示int左側的是const(不得更改為其他值)。
#2表示左側的指針是const。
#1表示int的左側是const。
放在一起,您可以將其作為const名為的成員函數讀取,該成員函數Method3引用指向的const指針int const(const int如果需要,可以引用,然后返回const指向int const(const int)的指針)。

TA貢獻1856條經驗 獲得超5個贊
首先const T
等于T const
。
const int* const
因此等于int const * const
。
讀取其中包含許多const
標記和指針的表達式時,請始終嘗試從右到左讀取它們(應用上面的轉換之后)。因此,在這種情況下,返回值是指向constint
的const指針。在const
這里,使指針本身沒有意義,因為返回值不是可以修改的左值。const
但是,指定為pointee 可以確保調用方不會修改所返回的int
(或的數組int
)Method3
。
const int*const&
成為int const*const&
,因此它是對指向const的const指針int
的引用。通過引用傳遞const指針也沒有任何意義-您不能修改引用的值,因為指針為,const
并且引用和指針占用相等的存儲空間,因此也沒有任何空間節省。
最后一個const
表示該方法未修改該this
對象。this
方法主體中的指針將具有(理論上的)聲明T const * const this
。這意味著一個const T*
對象將能夠調用T::Method3()
。
- 3 回答
- 0 關注
- 445 瀏覽
添加回答
舉報