2011-12-21 208 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