4

我正在阅读一本名为C++ Gotchas的书,它解释了 const 指针之间的转换,但我在理解以下规则时遇到了一些麻烦:

如果存在类型 T 且整数 n > 0,则两个指针类型 T1 和 T2 相似,使得:

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,0cv 1,1在上述每个序列中的含义吗?这本书没有帮助我足够理解它。但我确信这与 C++ 语言有关。

4

1 回答 1

4

cv i,j表示 2*(n+1) 个占位符的集合:

对于iwith1 <= i <= 2jwith0 <= j <= n占位符的每一个组合都cv i,j代表三个说明符之一const,volatile, const volatlie或什么都没有。

换句话说,这本书摘录的意思是,如果T可以找到这些占位符和一个类型,从而满足两个语句(“T1 is ..”),则T1称为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*是指向int

于 2011-12-21T05:34:27.350 回答