2016-01-23 26 views
1

我想這是這樣的代碼: -當構造函數的參數與成員變量名稱相同時會發生什麼?

class Something 
{ 
private: 
    int data; 

public: 
    Something(int data) 
    { 
     data = data; 
    } 
    int getdata() 
    { 
     return data; 
    } 
}; 


int main() 
{ 
    Something xyz(5); 
    cout<<xyz.getdata()<<endl; 
    return 0; 
} 

這樣做的輸出爲「0」。 我卡住了爲什麼這是0. 和藹的幫助。 TIA。

+0

你已經做了什麼來嘗試解決這個問題? –

+3

this-> data = data; – SashaMN

+0

通過this-> data = data替換了行數據=數據,它工作正常。 –

回答

1

您可以定義修改爲

Something(int data):data(data) 
{ 
} 

,它會工作,太。參數data隱藏功能範圍中的字段datathis->data明確指定範圍是該類的範圍。我不能告訴你爲什麼上面的聲明不是說構造函數的初始化列表中的元素必須是類實例的字段。所以這可能意味着範圍。雖然它們初始化的值來自函數作用域。

相關問題