为什么C++初始化列表不适用于this->

Dov*_*Dov 0 c++ initializer-list

在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
  {}
};
Run Code Online (Sandbox Code Playgroud)

我想也许这是一个操作顺序问题所以我试过:

(这 - > Y)(y)的

但那也不对.

jua*_*nza 5

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

  A(int x, int y) : _x(x), y(y) {}
Run Code Online (Sandbox Code Playgroud)

没有理由介入this这里.