2016-01-23 24 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明确指定范围是该类的范围。我不能告诉你为什么上面的声明不是说构造函数的初始化列表中的元素必须是类实例的字段。所以这可能意味着范围。虽然它们初始化的值来自函数作用域。

相关问题