我想知道,为什么返回参考值的函数有用?它对我来说没有多大意义,因为无论如何函数都不是左值......
这是一个函数的例子......这不是一个函数,它是一个类中的赋值运算符重载但看起来像这样
//class name is MyClass
MyClass& operator=(const MyClass& source){
//do things(assign values from the source to the current object)
return *this;
}
为什么要让该类返回引用? :/(我在视频教程中发现这个类似的代码是需要的链接https://www.youtube.com/watch?v=PXcRe-W2w7s)
答案 0 :(得分:5)
vector<int> v(5);
v.at(0) = 666;
这仅适用于at
返回引用。
答案 1 :(得分:1)
如果返回引用,则调用者可以使用它来链接调用。在您的示例中,它反映了一种约定,即分配也是一个值(或一个对象),即赋值的值(或对象)。
答案 2 :(得分:1)
与C++
相比,C
中的赋值运算符的结果为rvalue
而不是lvalue
:)
所以在C ++中你可以写
int a, b = 1, c = 2;
( a = b ) = c;
和a
将获得c
的值,放弃之前指定的b
值。
在C中,这样的代码不会被编译。
至于你关于引用的问题,那么这些函数非常有用。考虑例如类std::basic_string
的成员函数。
您可以编写例如
std::string s( "Hello" );
std::cout << ( s.append( 1, ' ' ) += "World" ) << std::endl;
这是可能的,因为成员函数append
和运算符+=
都返回对原始对象的引用。