歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

對C++中const T*&含義的理解

這裡的T可以是系統內置類型,也可以是用戶自定義類型。

關於const和指針、引用之間的一些用法,我在C++中const限定符的幾種常見用法中已有說明,見http://www.linuxidc.com/Linux/2012-12/75705.htm,這裡再簡要回顧一下:

const  T&                          const引用                    只能讀取指向對象的值,但不能修改其指向對象的值

const T* 或者 T const*    指向const對象的指針    只能讀取指向對象的值,但不能修改其指向對象的值

T *const                            const指針                      指針本身的值不能修改

回到今天的主題,那const T*&呢?

這可能會產生兩種理解,但C++肯定只支持一種。

第一種理解是:這是T*的const引用。第二種理解是:這是const T*的引用。

以下是判斷兩種理解正確性的代碼:

const int* a =new int(1); 
int* b =new int(1); 
const int*& c =a;//正確 
const int*& d =b;//錯誤: 無法從“int *”轉換為“const int *&” 

事實證明,第二種理解是正確的。我們將const T*&寫為T const*&產生同樣的結果,這說明const T*&和T const*&是等價的,都表示const T*或T const*的引用。

好的,const T*&的含義是什麼解決了,那麼,T*的const引用怎麼表示呢?

答案是:T*const& 。

顯然,T *const( const指針)的const引用也是上面這個答案。

那麼,const T*(指向const對象的指針)的const引用怎麼表示呢?想必聰明的讀者已經想到了。

答案是:T const*const& 或 const T*const&。

驗證的代碼我就不寫了,大家可以自行測試。

Copyright © Linux教程網 All Rights Reserved