このオブジェクトへのポインターを宣言する利点または理由は何ですか?
オブジェクトにプライベート変数「x」があるとします。
私はよくこのコードを目にします:
class_name<T> &ma = *this;
ma.x = 1;
それ以外の
this->x = 1;
またはさらに単純な
x = 1;
クラスの基底クラスがテンプレート クラスの場合、this
ポインターは基底クラスのメンバーを参照するために必須になります。これが、このような場合に最初の 2 つのバージョンが表示され、3 番目のバージョンがエラーになる理由です。
最初の 2 つのバージョンは (修正後 - 以下を参照) 同一であり、個人的なスタイルのみが異なります。
class_name<T>& ma = *this;
ma.x = 1;
ma.y = 2;
対
this->x = 1;
this->y = 2;
@chris が指摘するように、2 番目のバージョンにはコンパイル エラーがあり、最初のバージョンでは、変更が現在のオブジェクトに影響を与えないため、非常に異なる(おそらく間違った)ことを行っていることを意味するコピー&
を使用しない場合ただし、スコープの最後で破棄されるローカル変数。
テンプレート基底クラスを含まない一般的なケースでは、
x=1;
すべてを打ち負かします。