类型别名和类似类型

type aliasing and similar types

本文关键字:类型 别名      更新时间:2023-10-16

在 cpp 引用上,据说如果忽略它们指向同一类型的顶级 cv 限定符,则两个指针是相同的。在示例中,然后有这个示例

int (* const *)(int *) and int (* volatile *)(int *) are similar; 

我想知道这些应该如何相似?AFAIK 那些表示指向函数指针的指针,为了简化,它们可以重写为

using XYZ = int(*)(int *);
const XYZ *;     // A
volatile XYZ *;  // B

在这种情况下,A 和 B 不是指向不同的类型吗?

在 cpp 引用上,如果忽略它们指向相同类型的顶级 cv 限定符,则说两个指针是相同的

差一点。它说:

非正式地说,如果忽略顶级简历资格,则两种类型是相似的:

  • 它们是同一类型;或

  • 它们都是指针,并且指向的类型相似;或者

请注意,相同相似不同。

<小时 />
const XYZ *;     // A
volatile XYZ *;  // B

在这种情况下,A 和 B 不是指向不同的类型吗?

它们确实是不同的类型。但它们是相似的。