这是我在C ++中的代码:
MyClass foo1() {
return MyClass();
}
int MyClass::foo2() {
return 54;
}
问题是,它的价值是什么:
foo1().foo2();
值是54还是MyClass对象?
答案 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();
}