[解決済み] "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()
を正しく動作させることができるようになります)。
関連
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件