繁体   English   中英

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

[英]What happens when constructor's parameter has same name as member variable?

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

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。

您可以将定义更改为

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

它也会起作用。 该参数data隐藏字段data在函数的范围。 this->data明确指定范围为该类的范围。 除了说构造函数的初始化列表中的元素必须是类实例的字段之外,我不能告诉您上述声明为什么起作用。 因此,这可能意味着范围。 而使用它们初始化的值来自功能范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM