私は、構造体を作成した場合:C++仮想メソッド
struct joinpoint_exception: exception
{
virtual const char* what() const throw();
};
この文脈でwhat() const throw()
手段は何を?
私は、構造体を作成した場合:C++仮想メソッド
struct joinpoint_exception: exception
{
virtual const char* what() const throw();
};
この文脈でwhat() const throw()
手段は何を?
what
は定数定数char
へのポインタを返す仮想メンバー関数であり、それ自体は定数で何もスローされません。
virtual const char* what() const throw();
|-----| <- virtual member function
|---------| <- returning a pointer to constant chars
|-----| <- named what
|---| <- which is constant
|-------| <- which does not throw
(技術的機能はまだ投げることができますが、それがない場合は、それがどのデフォルトstd::terminate
を呼び出すに、std::unexpected
に直接行く)
それは変更されませんすなわち、それは(what()
がconst
であることを意味しオブジェクトの論理状態)、例外をスローしないこと(throw()
で示されるように)が含まれます。
what
は
const
はそのmutable
throw()
は、メソッドが例外をスローしてはならないことを意味しない限り、それは代わりにスローされstd::unexpected
を行う場合の方法は、任意の内部データを変更しないことを意味メソッドの名前です。
'const'の場合、それは正しくありません。メソッドは 'mutable'メンバを変更することができます。 'スロー(throw) 'の場合は、それも正しくありません。この関数は 'std :: unexpected'を呼び出すことはできますが、まだスローできます。 –
@Billy:説明をいただきありがとうございます。私はmutalbeを使用しません。メソッドがconstの場合、私のconstはstd :: unexpectedです。 –