int main() が呼び出された後に他の命令を実行する可能性はありますか?
int main(){cout<<"a";}
main() でのその呼び出しの後に、cout<<"b"; の呼び出しがあります。あとどこか。int に変更はありませmain()
ん。
静的オブジェクトのデストラクタ、および に登録された関数はstd::atexit
、終了後に実行されmain
ます。
#include <iostream>
#include <cstdlib>
struct S {~S() {std::cout << "c";}};
void f() {std::cout << "b";}
S s;
int main() {
std::atexit(f);
std::cout << "a";
}
出力: abc
最後の部分を に入れることができますatexit()
。プログラムの終了時、つまり main() の呼び出しが完了した後に実行されます。
を複数持つこともできますatexit
。
この関数への異なる呼び出しによって複数の atexit 関数が指定されている場合、それらはすべてスタックとして逆の順序で実行されます (つまり、最後に指定された関数が終了時に最初に実行されます)。
はい、cout << "b"
デストラクタで実行するクラスを定義してから、そのクラスのグローバル インスタンスを定義します。
要するに、非常に少ないオプションです。メインの終了後に何かを実行するために使用atexit()
したり、メインの終了後にデストラクタが呼び出されるグローバル オブジェクトを作成したりできます。しかし、main の終了は正式にはプログラムの終了です。