1. ホーム
  2. c++

[解決済み] "operator bool() const "の意味を教えてください。

2022-12-06 22:21:47

質問

例えば

operator bool() const 
{ 
    return col != 0; 
}

col はintです。 どのように operator bool() const はどのように働くのでしょうか?

どのように解決するのですか?

フォームのメンバ関数

operator TypeName()

は変換演算子である。 これらは、クラス型のオブジェクトをあたかも TypeName であるかのように使うことができ、そうであるときには、それらは TypeName に変換される。

この特定のケースでは operator bool() を使うと、クラスタイプのオブジェクトがあたかも bool . 例えば、クラスタイプのオブジェクトで obj のように使うことができます。

if (obj)

これは operator bool() を呼び出し、その結果を返し、その結果を if .

ここで注目すべきは operator bool() は非常に悪い考えであり、決して使ってはいけません。 なぜそれが悪いのか、そしてその解決策についての詳しい説明は 安全なブールのイディオム "を参照してください。

(C++ 標準の近日中の改訂版である C++0x では、明示的な変換演算子がサポートされるようになりました。 これにより、安全な explicit operator bool() を正しく動作させることができるようになります)。