これは、私が 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)
のパラメータがどのように命名されているかに注目してください。x
Foo
私は通常、 useを使用this->x = x;
してメンバー変数にパラメーターの値を割り当てますが、これは私にとってはうまくいくようです (私は通常 MSVC を使用します)。MSVC (および私が思う GCC) では、アクセスは、という名前のメンバーではなく、x
という名前のパラメーターにアクセスします。これはすべての C++ コンパイラで標準化された動作ですか? コンパイラがパラメーター変数ではなくメンバー変数だけに関連付けるのを止めるものはありますか? (例:と同等)x
x
x
this->x;
this->x = this->x;