C語言實現析構器

2021-09-30 04:38:22 字數 577 閱讀 3097

按照iso c的規定,乙個程序可以註冊多大32個函式,這些函式將由exit自動呼叫。這些函式被稱為「終止處理程式」(exit handler),並呼叫atexit函式來註冊這些函式。

#include

/*成功返回0,失敗返回非0*/

int atexit(void (*func)(void));

從原型我們可以看到,被註冊的函式是乙個沒有返回值很沒有引數的函式,我們可以使用這個特性來實現物件導向的析構函式。

#include

#include

void func(void);

int main() else

}void func(void)

$ gcc atexit.c -o atexit

$ ./atexit

輸出:resgister destory success.

program is exiting...

所以可以看到析構函式已經執行了,利用這個方法,我們可以在程式退出的時候自動關閉一些資源控制代碼,如檔案控制代碼等。

c 構造器和析構器

c 構造器和析構器主要負責構建物件和銷毀物件,在物件作用域結束後,銷毀物件。一般來說,建構函式用來完成事先的初始化和準備工作 申請分配記憶體 析構函式用來完成事後所必須的清理工作 清理記憶體 初始建構函式之建構函式特性 構造器名與類名一樣 定義 car void 呼叫 car car void 析構...

uri解碼簡析與C語言實現

1 遇到 才開始解析,後的兩個字元最終解析為乙個ascii字元.如 e4 0xe4 e 16 4 244,即 e4 解析為ascii碼為244的字元 2 xx才進行解析,其餘字元保留原樣 總結 abc abc 61 62 63 0x610x620x63 abc 注 本 是對glib2庫的g file...

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...