0

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

 MyClass foo1() {
     return MyClass();
 }

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

问题是,什么是价值:

foo1().foo2();

值是 54 还是 MyClass 对象?

4

2 回答 2

5

由于点.运算符是从左到右计算的(即首先foo1()调用以确定调用的目标,然后调用它的foo2()成员),所以答案是 54。

于 2013-02-09T20:29:05.110 回答
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();
}
于 2013-02-09T20:32:14.897 回答