Oracle® Solaris Studio 12.4: C++ ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.3 例外の制限の少ない仮想関数による置き換え

C++ 標準では、関数を仮想関数でオーバーライドする場合に、オーバーライドする側の仮想関数で、オーバーライドされる側の関数より制限の少ない例外を指定することはできません。置き換える側の関数の例外指定は、置き換えられる側の関数と同じか、それよりも制限されている必要があります。例外指定がないと、あらゆる例外が認められてしまうことに注意してください。

たとえば、基底クラスのポインタを使用して関数を呼び出す場合を考えてみましょう。その関数に例外指定が含まれていれば、それ以外の例外が送出されることはありません。置き換える側の関数で、それよりも制限の少ない例外指定が定義されている場合は、予期しない例外がスローされる可能性があり、予期しないプログラムの動作に続いてプログラムが異常終了する結果となることがあります。

-features=extensions オプションを使用すると、限定の少ない例外指定を含んだ関数による置き換えが認められます。