程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++和面向對象學習筆記--main函數結束後的調用

C++和面向對象學習筆記--main函數結束後的調用

編輯:C++入門知識

本以為主函數main是首先被調用的函數,後來發現操作系統會調用一個啟動函數,對C++運行庫進行初始化。

本以為主函數main被返回之後操作系統將回收資源,卻不知一個重要的函數—atexit()。

 

程序退出的時候需要一些諸如釋放資源的操作,但是程序的退出有很多種,可能是main函數結束范圍一個值傳遞給exit(),也可能是一些其他的原因,所以需要一種與程序結束方式無關的方法來進行程序退出時必要的處理。

 

函數原型:int atexit(void(*)(void));

函數作用:注冊一個函數,這個函數在程序結束的時候被調用

 

#include<cstdlib>
#include<iostream>
using namespace std;

void fun1()
{
    cout<<"fun1"<<endl;
}
void fun2()
{
    cout<<"fun2"<<endl;
}

int main()
{
    atexit(fun1);//注冊fun1,主函數終止時調用
    atexit(fun2);//注冊fun2,主函數終止時調用
    cout<<"mian exit"<<endl;
    return 0;
}


//運行結果:
main exit
fun2
fun1


從結果中可以發現fun1和fun2兩個函數在主函數結束之後被調用,而且調用的順序與注冊的順序相反。

 

摘自 C小加

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved