『C++ テンプレート - 完全ガイド』の例のpointers/countingptr.hppでは、派生従属のメンバーはポインターを使用して参照されます。この例では、なぜ が必要なのですか?class CountingPtr
this
this
this
依存する基本クラス テンプレートのメンバーに名前を付けるには、ポインターが必要であることを認識しています。確かに、this
依存する派生クラス テンプレートでもポインターは必要ありませんか?
『C++ テンプレート - 完全ガイド』の例のpointers/countingptr.hppでは、派生従属のメンバーはポインターを使用して参照されます。この例では、なぜ が必要なのですか?class CountingPtr
this
this
this
依存する基本クラス テンプレートのメンバーに名前を付けるには、ポインターが必要であることを認識しています。確かに、this
依存する派生クラス テンプレートでもポインターは必要ありませんか?
必要ありません。this
どこでも使う人もいます。
これは、このコードを作成した人のスタイルだと思います。this->
一部の人々は、そのクラス内のクラスに関連するものの前に配置することを好みます。次のような面白いことをしている場合、それは実際に役立つことがあります。
void foo( int a )
{
this->a = a;
}
または、これにより読みやすさが向上すると思う場合。ただし、使いすぎるとめちゃくちゃになります。
this->a = this->b * this->c - this->foo( this->d, this->bar() );
従属派生クラスでは必要ありません
何で?
「依存派生クラス」はありません。派生クラスは派生クラスです。
派生クラステンプレート
これはクラステンプレートですが、クラスとして解析されます。
このように考えてください:
これはクラステンプレートではなく、単なるクラス(タイプ)です。クラステンプレートの特殊化ですが、それでも通常のクラスのようなクラスです。
またはこのように:
派生クラステンプレートは、「魔法の怠惰なタイプ」引数でインスタンス化されます。この怠惰な型の引数は、それに依存する式のコンパイルを一時停止します。