C++ 常量限定符和符号

C++ 常量限定符和符号,c++,pointers,reference,constants,C++,Pointers,Reference,Constants,我对const限定符感到困惑。我发现并阅读了很多文章和类似的问题,例如 我不清楚的是为什么g++抱怨这个班级成员: const string& const name; 但它并没有抱怨 string& const name; 我的想法是声明一个指向常量字符串值的常量指针。我使用&而不是*来避免NULL指针 我错过了什么 编译器错误如下: ‘const’ qualifiers cannot be applied to ‘const string& {aka const s

我对
const
限定符感到困惑。我发现并阅读了很多文章和类似的问题,例如

我不清楚的是为什么
g++
抱怨这个班级成员:

const string& const name;
但它并没有抱怨

string& const name;

我的想法是声明一个指向常量字符串值的常量指针。我使用
&
而不是
*
来避免
NULL
指针

我错过了什么

编译器错误如下:

‘const’ qualifiers cannot be applied to ‘const string& {aka const std::__cxx11::basic_string<char>&}’
  const string& const name;
                      ^
“const”限定符不能应用于“const string&{aka const std::_cxx11::basic_string&}”
常量字符串和常量名称;
^

字符串和常量名称也应该失败。引用和指针是不同的东西

引用不能是常量本身,它没有意义。和指针不同,初始化后无法再次绑定引用

与和的演示失败


请参见

“我的想法是声明一个常量指针…”-
&
根本不声明指针。也许编译器说的是“你告诉过我一次,为什么…”你混淆了引用和指针。在你最喜欢的C++参考书索引中查找这些词。“科迪格雷,他没有意识到他有一本C++参考书,认为这是一个指针式的书,因为整个问题的前提被打破了。“它不会抱怨
string&const name;
”它肯定会抱怨。你忘了告诉他缺少什么,比如指针和引用之间的区别。