これは、私が C++ をプログラミングするときによく行うことであり、これが「悪い」習慣ではないかとしばらく考えていました (この動作は標準化されていますか?)。
クラスがあるとしましょう:
Class Foo {
  public:
    Foo(int x) {
      //this->x is the member "x" of Foo
      //x is the paramater "x" to the function
      this->x = x; //Sets Foo::x to x (parameter x)
    }
  private:
    int x;
};
のメンバ変数と同じ名前Foo::Foo(int x)のパラメータがどのように命名されているかに注目してください。xFoo
私は通常、 useを使用this->x = x;してメンバー変数にパラメーターの値を割り当てますが、これは私にとってはうまくいくようです (私は通常 MSVC を使用します)。MSVC (および私が思う GCC) では、アクセスは、という名前のメンバーではなく、xという名前のパラメーターにアクセスします。これはすべての C++ コンパイラで標準化された動作ですか? コンパイラがパラメーター変数ではなくメンバー変数だけに関連付けるのを止めるものはありますか? (例:と同等)xxxthis->x;this->x = this->x;