日常的な使用における NoExcept: いつ、そしてなぜ使用するのか
noexc キーワードは、例外をスローしないことを保証できる C 関数の有望な最適化を提供します。 。その利点は理解していますが、実際の応用について疑問があるかもしれません。ここでいくつか説明します。
1. Noexc を追加する場合
すべての関数に noexc の注釈を付ける必要はありません。関数がスローされないことが明らかな場合に使用してください。よくわからない場合は、次のシナリオを検討してください:
2.パフォーマンスの利点
いいえ、特定のコンパイラの最適化を許可することにより、主にパフォーマンスに影響を与えます。最新のコンパイラーはまだ noExcept を最大限に活用していないかもしれませんが、次のような利点があります。
具体的な例
ここでは、noexc を追加するとパフォーマンスが向上する例を示します。
class MyClass { public: MyClass() noexcept = default; MyClass(const MyClass& other) noexcept = default; }; int main() { std::vector<MyClass> v; for (int i = 0; i < 100000; i++) { v.push_back(MyClass()); } }
コピーをマークすることにより、コンストラクターの例外を除いて、コンパイラーはオブジェクトの構築により効率的な移動操作を使用できるため、実行が高速化されます。
以上がC `noexc`: いつ使用する必要がありますか?またパフォーマンスの向上は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。