C++ 強制終了 書いて覚えるための初心者自己中記事
使うもの
abort()
exit()
abort() はいきなり打ち切る
exit() は終了処理がある
class Hoge{ public: virtual ~Hoge() { cout << "Hoge::~Hoge" << endl; system("pause"); } }; Hoge hoge; int main() { int n; cin >> n; if (cin.fail()) { abort(); } else { exit(EXIT_FAILURE); } cout << "dummy" << endl; system("pause"); }
デストラクタが呼ばれたらわかるようにしている。
cin に数値を入れたり文字を入れたりしてabort と exit の両関数の動作を比べると
exit ではデストラクタが呼ばれていた。
abort では呼ばれない。
exit関数もmain関数の後の処理をちゃんとやるという話しであって、
自動変数のデストラクタは呼ばれない。
exit関数が呼ばれたときに何かさせたい場合は
atexit関数
を使うらしい。
戻り値も引数もない関数を作ってatexitに渡せばいいらしい。
(よくわからないなぁ)
例発見
void on_exit() { std::cout << "on exit" << std::endl; } int main() { std::atexit(on_exit); }
なるほど、作った関数の中で終了処理を書いておけばいいのか。
ここまで。