当构造函数的参数与成员变量同名时会发生什么?

时间:2016-01-23 04:44:38

标签: c++

我正在尝试这样的代码: -

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;
}

这是&#34; 0&#34;的输出。 我被困住了为什么这会变成0。 善意的帮助。 TIA。

1 个答案:

答案 0 :(得分:1)

您可以将定义更改为

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

它也会起作用。参数data隐藏了函数范围内的字段datathis->data显式指定范围为类的范围。我不能告诉你为什么上述声明的工作原理不是说构造函数的初始化列表中的元素必须是类实例的字段。所以这可能意味着范围。虽然初始化它们的值来自函数范围。