返回值這裏是我的C++代碼:順序功能
MyClass foo1() {
return MyClass();
}
int MyClass::foo2() {
return 54;
}
,問題是,什麼是價值:
foo1().foo2();
是價值54或者是在myClass目的?
返回值這裏是我的C++代碼:順序功能
MyClass foo1() {
return MyClass();
}
int MyClass::foo2() {
return 54;
}
,問題是,什麼是價值:
foo1().foo2();
是價值54或者是在myClass目的?
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();
}
由於點.
操作者進行評估左到右(即,第一foo1()
被調用,以確定調用的目標,然後將其foo2()
構件被調用),答案是54
這就是我想要的。無論如何,值是MyClass對象嗎? – user1873947 2013-02-09 20:29:51
只調用foo1()將返回一個MyClass。 – SirPentor 2013-02-09 20:30:51
@ user1873947除非將'foo2()'改變爲將'MyClass'對象返回給您,例如'MyObject foo2(){return * this; }' – dasblinkenlight 2013-02-09 20:31:18
你可以只嘗試... – 2013-02-09 20:27:55
我可以,但我想要一些解釋它爲什麼是這樣的答案。 – user1873947 2013-02-09 20:29:18