2

関数について私が見たすべての定義は、関数が1つのパラメーターと1つのみのパラメーターios::setstate( iostate state )を取ることを示していますが、次の関数呼び出しでプログラムをコンパイルすると、すべてがコンパイルされ、正常に実行されます。

mystream.setstate( std::ios_base::badbit, true );

正確には 2 番目のパラメーターとは何ですか?それに関するドキュメントがないのはなぜですか?

編集: Microsoft Visual Studio 2010 の最新バージョンのコマンド ライン コンパイラを使用しています。

4

1 に答える 1

1

お気づきのように、単一の引数を受け入れる必要がありますが、実装では、デフォルト値を持つパラメーターを介してメンバー関数を拡張できます (§17.6.5.5)。言い換えれば、これが機能する限り:

mystream.setstate( std::ios_base::badbit );

あなたのコンパイラは準拠しています。ただし、コードが機能する必要がないということはありません

(あなたのライブラリの実装は、boolean パラメーターがあると便利だと判断しました。デフォルト値があるため、それに気付くことはありませんが、実装固有の領域に入り、自分で引数を提供することはできます。これが良いかどうかアイデアは明らかに別の問題ですが、おそらくそうではありません。)

于 2012-02-22T00:39:46.617 に答える