2013-02-09 85 views
0

返回值這裏是我的C++代碼:順序功能

MyClass foo1() { 
    return MyClass(); 
} 

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

,問題是,什麼是價值:

foo1().foo2(); 

是價值54或者是在myClass目的?

+5

你可以只嘗試... – 2013-02-09 20:27:55

+1

我可以,但我想要一些解釋它爲什麼是這樣的答案。 – user1873947 2013-02-09 20:29:18

回答

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(); 
} 
5

由於點.操作者進行評估左到右(即,第一foo1()被調用,以確定調用的目標,然後將其foo2()構件被調用),答案是54

+0

這就是我想要的。無論如何,值是MyClass對象嗎? – user1873947 2013-02-09 20:29:51

+0

只調用foo1()將返回一個MyClass。 – SirPentor 2013-02-09 20:30:51

+0

@ user1873947除非將'foo2()'改變爲將'MyClass'對象返回給您,例如'MyObject foo2(){return * this; }' – dasblinkenlight 2013-02-09 20:31:18