0

C++ 標準 I/O ストリーム クラスは、ストリームの状態をチェックするために使用されるios2 つのオーバーロードされた演算子!を定義します。void*

例えば:

ifstream fin("hello.txt");
if (fin)  {} // ios::operator void*() is called
if (!fin) {} // ios::operator !() is called

ただし、オーバーロードされた 2 つの演算子はやり過ぎだと思います。オーバーロードされた関数が 1 つだけではないのはなぜoperator bool()ですか?

これは、I/O ストリーム クラスがboolC++ キーワードの 1 つになる前に広く使用されていたためと考えられます。言い換えれば、下位互換性のためだけにそれらを保持してください。

下位互換性のためだけに、なぜ非推奨としてマークされていないのですか? 下位互換性がない場合、何のために?

4

0 に答える 0