&c ++中的含义是什么?

Mil*_*hiz 3 c++ syntax reference

我想知道以下示例中&的含义:

class1 &class1::instance(){

///something to do

}
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 8

&运营商在C++三种含义.

  • "按位与",例如 2 & 1 == 3
  • "地址",例如: int x = 3; int* ptr = &x;
  • 参考类型修饰符,例如 int x = 3; int& ref = x;

这里有一个引用类型修饰符.您的函数class1 &class1::instance()是被class1调用类型的成员函数instance,它返回引用 -to- class1.如果你写(这相当于你的编译器),你可以更清楚地看到这一点class1& class1::instance().

  • 但在这种情况下,如果您以对人类"有意义"的方式格式化代码(将修饰符视为类型说明符的一部分而不是作为声明符的一部分,在标准中),您将自己置于风险之中错误,因为*计算机不会那样对待它们*.在这种情况下,要使计算机适应人类,需要更改*语言定义*,如果没有时间机器,我们就无法做到这一点.如果失败了,那么最好的选择就是让人类读者明白编译器将如何解释代码. (2认同)

Wim*_*Wim 7

这意味着您的方法返回对method1对象的引用.引用就像一个指针,因为它引用了对象而不是它的副本,但与指针的区别在于引用:

  • 永远不会是undefined/NULL
  • 你不能用它们做指针运算

所以它们是一种轻巧,更安全的指针版本.