2

ここで typedef が何をしているのか、またその目的は何なのか説明してもらえますか?

class C
{
    public:
        ...

        typedef bool (C::*implementation_defined_bool_type)(bool) const;

        operator implementation_defined_bool_type() const {
            return _spi ? &C::isPersistent : 0;
        }

};
4

1 に答える 1

5

がここで何をしているのか説明してもらえますtypedefか?

typedef bool (C::*implementation_defined_bool_type)(bool) const;

typedefsa型の const メンバ関数へのポインタC。入力パラメータとしてを受け取り、boolも返しますbool

その間、

operator implementation_defined_bool_type() const 

type のオブジェクトを受け取り、 typeCを返しますimplementation_defined_bool_typeこれは変換演算子
として知られています。

その目的は何ですか?

これは、ブール コンテキストでオブジェクトを検証することを目的とした"Safe Bool Idiom"を実装します。Safe Bool イディオムはC++11 標準では廃止されて
いることに注意してください。

よく読んでください:
安全なブールイディオム

于 2012-06-19T10:20:43.277 に答える