C++ 指向C+中具有未定义访问权限的类型的指针+;?

C++ 指向C+中具有未定义访问权限的类型的指针+;?,c++,pointers,C++,Pointers,C++有三种类型的o字符: 有符号字符-有符号字符 无符号字符-无符号字符 char-未定义其是有符号还是无符号的字符 “类比”,C++还有3种指针类型吗?p> const int*-指向常量的指针int int*-指向可变int ??-指向int的指针,该指针未定义其常量或变量 在C++中,使用什么代替?? > C++ >不支持“程序后面定义的这种类型的精确类型”;有些类型是最好的——“实现依赖于系统” 所以C++中没有这个等价物。指针是常量或非常量 字符不是“未定义其有符号或无符号

C++有三种类型的o字符:

  • 有符号字符
    -有符号字符
  • 无符号字符
    -无符号字符
  • char
    -未定义其是有符号还是无符号的字符

“类比”,C++还有3种指针类型吗?p>

  • const int*
    -指向常量的指针
    int
  • int*
    -指向可变
    int
  • ??
    -指向
    int
    的指针,该指针未定义其常量或变量
<>在C++中,使用什么代替<代码>??<代码> > C++ >不支持“程序后面定义的这种类型的精确类型”;有些类型是最好的——“实现依赖于系统”

<>所以C++中没有这个等价物。指针是常量或非常量


字符不是“未定义其有符号或无符号的字符”;C++标准——“字符表示类型”,它可以在目标系统上最有效地处理(与符号char或unchar字符具有相同的表示和对齐,但始终是一种不同类型)。所以char始终是未定义的类型之一

您错误地认为
const int*
必然是指向
const int
的指针。例如:

int a; // Not const;
int const* p = &a; // Valid

因此,
int const volatile*
就是答案。它可以指向任何符合条件的cv
int

,没有类比。但是有一个
volatile
mutable
限定符。还要注意的是,
char
只有在实现可以使其有符号或无符号时才是未定义的。但是,C++中的“访问”指的是公共/保护/私有/代码>,即类成员。“所以char总是类型之一”——与刚才引用的标准部分相矛盾:它具有相同的表示和对齐,但不是同一类型。这对模板实例化和专业化很重要(例如,参见)