C++ コンストラクターは例外をスローすることができ、このクラス (またはこのクラスから派生したクラス) の少なくとも 1 つのスタティック/グローバル・インスタンスがあります。
実行ライブラリーやダイナミック・ライブラリーのロード時に実行されるスタティック・エラボレーションなど、例外が許可されていないコンテキストで例外がスローされる可能性があるため、この使用方法は安全ではありません。そのようなコンテキストで例外がスローされると、C++ ランタイムはアプリケーションを正常に実行できません。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
例外のスロー |
例外がスローされた場所 |
2 |
定義 |
コンストラクターが定義された場所 |
#include <stdio.h> class Bomb { // bad class throws exception from constructor public: int x; Bomb() : x(0) { throw "boom"; } ~Bomb() { } }; // Variable declaration that will throw exception // during static elaboration before main is called Bomb myBomb; int main(int argc, char **argv) { printf("hello, world\n"); // never gets here }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。