【问题标题】:Why does C++ initializer list not work with this->为什么 C++ 初始化程序列表不适用于 this->
【发布时间】:2014-08-01 16:36:09
【问题描述】:

在 C++ 中,我们可以在构造函数中使用赋值来初始化对象,也可以使用初始化列表。对于 const 数据成员或对象数据成员,初始化列表是唯一的方法。但是,当参数的名称与数据成员的名称匹配时,this->name(name) 不起作用。如果名称相同,有什么办法可以做到这一点?

class A {
private:
  int _x,y;
public:
  A(int x, int y) : _x(x), // this works
   this->y(y) // this does not work
  {}
};

我认为这可能是操作顺序问题所以我尝试了:

(this->y)(y)

但这也不对。

【问题讨论】:

  • 为什么不重命名参数或成员?一个有_ 而没有一个似乎很傻。
  • y(y) 也可以。

标签: c++ initializer-list


【解决方案1】:

你只需使用构造函数初始化列表:

  A(int x, int y) : _x(x), y(y) {}

这里没有理由涉及this

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多