web-dev-qa-db-ja.com

C ++での「this」キーワードの使用

可能性のある複製:
C++でこれを過度に使用すると、コードの匂いがします
C++で「this」キーワードを使用する必要がある場合
これを使用する理由はありますか->

C++では、キーワードthisは通常省略されますか?例えば:

Person::Person(int age) {
    _age = age;
}

とは対照的に:

Person::Person(int age) {
    this->_age = age;
}
57
moteutsch

はい、必須ではなく、通常は省略されます。ただし、スコープでオーバーライドされた後、変数にアクセスするために必要になる場合があります。

Person::Person() {
    int age;
    this->age = 1;
}

また、これ:

Person::Person(int _age) {
    age = _age;
}

それはかなり悪いスタイルです。同じ名前の初期化子が必要な場合は、次の表記法を使用します。

Person::Person(int age) : age(age) {}

詳細はこちら: https://en.cppreference.com/w/cpp/language/initializer_list

79
orlp

プログラマーの好みです。個人的には、thisを使用するのが大好きです。オブジェクトメンバーを明示的にマークするからです。もちろん、_は同じことを行います(慣習に従う場合のみ)

21
Rich

どちらの方法でも機能しますが、多くの場所では、開発者を何らかの方法でガイドするコーディング標準が用意されています。そのようなポリシーが整っていない場合は、心を守ってください。ただし、それを使用すると、コードの可読性が本当に向上します。特に、クラスレベルの変数名の命名規則に従っていない場合。

9
Muad'Dib

thisは、そのメンバー関数が参照されるオブジェクトを指すため、オプションです。

5
Alok Save

上記の例の場合、通常は省略されます、はい。ただし、どちらの方法も構文的には正しいです。

3
Chad

はい。あいまいさがない限り。

また、一部のコンパイラが仮想関数呼び出しを最適化するのを避けるために時々使用されます。

3
balki