函数的返回值顺序

时间:2013-02-09 20:26:58

标签: c++ function return

这是我在C ++中的代码:

 MyClass foo1() {
     return MyClass();
 }

 int MyClass::foo2() {
     return 54;
 }

问题是,它的价值是什么:

foo1().foo2();

值是54还是MyClass对象?

2 个答案:

答案 0 :(得分:5)

由于点.运算符从左到右进行求值(即调用第一个foo1()来确定调用的目标,然后调用其foo2()成员),答案是54。

答案 1 :(得分:3)

foo1().foo2();表示foo1()返回对象或对对象的引用,允许您在其上调用foo2()

类似的是将foo1()的返回值存储在变量中:

MyClass obj = foo1();
int ret = obj.foo2();

示例(延迟加载的单例):

class MyClass
{
public:
    static MyClass& getInstance(){ static MyClass m; return m; }
    int getNumber(){ return 54; }
};

int main()
{
    std::cout << MyClass::getInstance().getNumber();
}