ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: C++ ユーザーズガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
4.9 静的名前空間スコープ関数のクラスフレンドとしての宣言
4.10 事前定義済み __func__ シンボルの関数名としての使用
C++ 標準では、関数を仮想関数で置き換える場合に、置き換える側の仮想関数で、置き換えられる側の関数より制限の少ない例外を指定することはできません。置き換える側の関数の例外指定は、置き換えられる側の関数と同じか、それよりも制限されている必要があります。例外指定がないと、あらゆる例外が認められてしまうことに注意してください。
たとえば、基底クラスのポインタを使用して関数を呼び出す場合を考えてみましょう。その関数に例外指定が含まれていれば、それ以外の例外が送出されることはありません。置き換える側の関数で、それよりも制限の少ない例外指定が定義されている場合は、予期しない例外がスローされる可能性があり、予期しないプログラムの動作に続いてプログラムが異常終了する結果となることがあります。
-features=extensions オプションを使用すると、限定の少ない例外指定を含んだ関数による置き換えが認められます。