C++ 这如何返回引用?
我一直在尝试学习如何使用单例设计模式,但偶然发现:C++ 这如何返回引用?,c++,reference,C++,Reference,我一直在尝试学习如何使用单例设计模式,但偶然发现: static S& getInstance() { static S instance; return instance; } 我在这里注意到它返回实例,它不应该返回实例& 编辑:我还应该提到,编译器似乎没有做出任何抱怨。返回实例返回对实例的引用。那就像 int& r = a; 对于某些int a创建对a的引用,而不需要编写a&或类似的内容。不,它是正确的。编译器将从函
static S& getInstance()
{
static S instance;
return instance;
}
我在这里注意到它返回实例
,它不应该返回实例&
编辑:我还应该提到,编译器似乎没有做出任何抱怨。
返回实例代码>返回对实例的引用。那就像
int& r = a;
对于某些int a
创建对a
的引用,而不需要编写a&
或类似的内容。不,它是正确的。编译器将从函数getInstance
创建并返回对instance
的引用
您询问它是否应该是实例&
。首先,这在语法上是无效的。那么&instance
呢?它将获取实例的地址
,因此将返回一个实例*
&
运算符的多次使用是造成混淆的常见原因。这里有一个快速的“备忘单”,它不使用标准中复杂的术语:
&
的二进制(双参数)版本应用于两个变量实例,表示按位and(重载时除外)
应用于类型时,&
的一元(单参数)版本表示对类型的引用。例如:
int a = 7;
int& ref_a = a; // ref_a is a reference to a
当应用于变量时,&
的一元(单参数)版本表示
运算符的地址,并生成指向该变量的指针
int a = 7;
int* ptr_a = &a;
int a = 7;
int* ptr_a = &a;