5

このコードを持つクラスは、ClassNameのポインターの参照クラスです。

class ClassName;

class ClassRef
{
    ClassName* m_class;
    ...
    operator ClassName *() const { return m_class; }
...

これは、次のようなポインタの有効性チェックに使用されると想定しています。

ClassRef ref(new ClassName())
if (ref) { bla bla bla }

私の考えは正しいですか?

4

1 に答える 1

10

これは、変換演算子の過負荷です。オブジェクトをポインタ型にClassRef変換する必要があるときはいつでも、この演算子が呼び出されます。ClassName

それで;

ClassRef r;
ClassName * p = r;

この過負荷を利用します。

于 2012-11-27T20:03:54.473 に答える