返回引用的函数?

时间:2015-01-07 14:53:18

标签: c++ class

我想知道,为什么返回参考值的函数有用?它对我来说没有多大意义,因为无论如何函数都不是左值......

这是一个函数的例子......这不是一个函数,它是一个类中的赋值运算符重载但看起来像这样

//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

3 个答案:

答案 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和运算符+=都返回对原始对象的引用。