2017-09-15 46 views
-1

我想學習C++。我希望改變公衆成員數據2的值。在第二個cout聲明中,爲什麼我沒有獲得10.5值?如何更改C++中公用數據字段的值?

class Test 
{ 
    private: 
    int data1; 

public: 
    float data2; 
    void function1() 
    { 
    data1=2; 
    } 
    float function2() 
    { 
    data2=3.5; 
    return data2; 
    } 
}; 

int main() 
{ 
    Test obj2; 
    Test obj1; 
    cout<<"value of public member data2 is "<< obj2.function2()<<endl; 
    obj2.data2=10.5; 
    cout<<"new value of data2 is " <<obj2.data2<<where as its previous value 
was obj2.function2()<<endl; 
} 
+3

你總是設置'data2'在'函數2()'你回來之前,能有什麼辦法? – user0042

+0

您正在第二個cout語句中調用function2。該函數將data2值更改爲3.5,並返回該值,然後由cout打印。 – JPX

+0

對不起,我修改了Cout語句。它應該給「數據2的新值是10.5,而之前的值是3.5」,但在這兩個地方 – rida

回答

-1

裏面funtion2,你又分配值:

float function2() 
{ 
    data2=3.5; 
    return data2; 
} 

從函數2

1

刪除data2=3.5;當你運行cout << x << b()編譯器可以將其分爲東西看多邏輯,如:

auto t = b() 
cout << x << t 

如果x被改變通過B()則修改的一個是什麼將被用來

+1

這實際上是對發生情況的正確解釋。函數參數(或運算符參數)的評估順序未指定,編譯器可以使用它喜歡的任何順序。 –

+0

@BoPersson謝謝 - 我知道我的答案是有點短,但我爭着回答它,它得到了關閉前(恕我直言不正確) – UKMonkey

相關問題