这是我在 C++ 中的代码:
MyClass foo1() {
return MyClass();
}
int MyClass::foo2() {
return 54;
}
问题是,什么是价值:
foo1().foo2();
值是 54 还是 MyClass 对象?
由于点.
运算符是从左到右计算的(即首先foo1()
调用以确定调用的目标,然后调用它的foo2()
成员),所以答案是 54。
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();
}