C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

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);
}

 

なるほど、作った関数の中で終了処理を書いておけばいいのか。

ここまで。