それらの機能は正しく実装されていますかnoexcept
/throw()
最初の機能
void do_something(const std::string s) noexcept{
// do something with no exception
}
do_something("Hello");
"Hello" literal
新しいstd::string
オブジェクトを作成し、例外をスローする可能性があります。
この例外は、関数の外側または内側のどちらでスローされますか?
2 番目の関数:
size_t do_something(const char *s) noexcept{
return strlen(s);
}
do_something(nullptr);
strlen
が選択されているのは、レガシーC
関数であり、クラッシュするためs
ですnullprt
。
ただし、このクラッシュは例外とは関係ありません。仮定は正しいですか?