当成员变量的名称和传入的参数都相同时,它是否是未定义的行为?

dwn*_*enr 1 c++

可以说我有一个类如下:

class Base
{
  int a;

  public void Initialize(int a)
  {
    a = a;
  }
}
Run Code Online (Sandbox Code Playgroud)

(是的,这段代码是糟糕的编程习惯,但我只是写了它,所以它可以用作一个例子)

对于函数Initialize,成员变量的名称和传入的参数是相同的.

在这种情况下,这是未定义的行为吗?或者,如果存在任何歧义,编译器是否选择成员变量(或参数).

mar*_*ark 9

它是定义的行为......您将局部变量a(参数)分配给自身.如果要将其分配给成员,请使用this->a = a;