0

このオブジェクトへのポインターを宣言する利点または理由は何ですか?

オブジェクトにプライベート変数「x」があるとします。

私はよくこのコードを目にします:

class_name<T> &ma = *this;
ma.x = 1;

それ以外の

this->x = 1;

またはさらに単純な

x = 1;
4

1 に答える 1

2

クラスの基底クラスがテンプレート クラスの場合、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; 

すべてを打ち負かします。

于 2013-01-08T03:17:30.603 に答える