我正在读一本名为C++ Gotchas的书,它解释了const指针之间的转换,我在理解以下规则时遇到了一些麻烦:
如果存在类型T和,则两个指针类型T1和T2相似 整数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都是const,volatile,const volatile或什么都没有。
有人可以指出我正确的方向,我可以得到解释,或者是否有人熟悉 cv 1,0 和 cv 1,1 表示上述每个序列?这本书对我的帮助不足以理解它。但我确信这与C ++语言有关。
答案 0 :(得分:4)
cv i,j
表示2 *(n + 1)个占位符的集合:
对于i
与1 <= i <= 2
和j
与0 <= j <= n
的每个组合,占位符cv i,j
代表三个说明符之一const,volatile, const volatlie
或什么都没有。
本书摘录换句话说,如果可以找到这些占位符和类型T
,使得两个语句(“T1 is ..”)得到满足,那么T1
和{ {1}}被称为“相似”。
例如T2
和T1 = const int*
是相似的,因为如果选择的话,它们会从摘录中填写两个语句:
T2 = int*
,T = int
n = 1
和cv1,0= {nothing}
cv1,1 = const
和cv2,0={nothing}
要看到这一点,只需插入占位符:
cv2,1 = {nothing}
是指向const int*
const int
是指向int*