2011-12-21 174 views
4

我讀了一本書叫C++ Gotchas這也解釋了常量指針之間的轉換,我遇到了一些麻煩了解以下規則:指針到指針到const的轉換

兩個指針類型T1和T2是類似,如果存在一個類型T和 整數n> 0,使得:

T1是CV 1,0指針CV 1,1指針。 。 。 CV 1,n-1個 指針CV 1,N t個

和,

T2是CV 2,0指針CV 2,1指針。 。 。 CV 2,n-1個 指針CV 2,N t個

其中每個CVI,j是常量,易失性,常量揮發性的,或沒有。

可有人點我到正確的方向,我可以得到一個解釋或者是任何人都熟悉的東西CV 1,0CV 1,1意味着在上述各序列的?這本書沒有幫助我足夠了解它。但我確定這與C++語言有關。

回答

4

cv i,j表示2 *(N + 1)的佔位符的集合:

對於i每個組合與1 <= i <= 2j0 <= j <= n佔位符cv i,j代表三個符const,volatile, const volatlie或沒有之一。

該書摘錄換句話說意味着,如果這些佔位符和類型T可以發現這樣兩個語句(「T1是..」)得到滿足,則T1T2被稱爲「相似的」。

例如T1 = const int*T2 = int*是相似的,因爲他們fullfill兩種說法從摘錄,如果一個選擇:

  • T = intn = 1
  • cv1,0= {nothing}cv1,1 = const
  • cv2,0={nothing}cv2,1 = {nothing}

T Ø看到這一點,只需要插入佔位符:

const int*是指向const int

int*的指針int