日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C 析构函数

發布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C 析构函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C 析構函數概述

C 析構函數是一個特殊的成員函數,作用與構造函數相反,它的名字是類名的前面加一個~符號,析構函數是與構造函數作用相反的函數,當對象的生命期結束時,會自動執行析構函數。

C 執行析構函數的情況

如果在一個函數中定義了一個對象,當這個函數被調用結束時,對象應該釋放,在對象釋放前自動執行析構函數。static局部對象在函數調用結束時對象并不釋放,因此也不調用析構函數,只在main函數結束調用exitt函數結束程序時,才調用static局部對象的析構函數。如果定義了一個全局對象,則在程序的流程離開其作用域時,調用該全局對象的析構函數。

如果用new運算符動態地建立了一個對象,當用delete運算符釋放該對象時,先調用該對象的析構函數。?

C 析構函數詳解

析構函數的作用并不是刪除對象,而是在撤銷對象占用的內存之前完成一些清理工作,使這部分內存可以被程序分配給新對象使用。

析構函數不返回任何值,沒有函數類型,也沒有函數參數,因此不能重載,一個類可以有多個構造函數,但只能有一個析構函數。?

析構函數的作用并不僅限于釋放資源方面,它還可以被用來執行程序員希望在最后一次使用對象之后所執行的任何操作。

如果沒有定義析構函數,C 編譯系統會自動生成一個析構函數,但它只是徒有析構函數的名稱和形式,實際上什么都不執行,要想讓析構函數執行,必須在定義的析構函數中指定。

案例:C 析構函數案例

#include? using?namespace?std; class?Number {public:void?setNumber(?double?num );double?getNumber(?void?);Number();?// 這是構造函數聲明~Number();?// 這是析構函數聲明private:float?number; }; // 成員函數定義,包括構造函數 Number::Number(void) {cout?<<?"我是構造函數"?<<?endl; } Number::~Number(void) {cout?<<?"我是析構函數"?<<?endl; }void?Number::setNumber(?double?num ) {number = num; }double?Number::getNumber(?void?) {return?number; } // 程序的主函數 int?main( ) {Number num;num.setNumber(6.0);?// 設置長度cout?<<?"學號是:"?<< num.getNumber() <<endl;return?0; }

編譯運行結果:

我是構造函數 學號是:6 我是析構函數-------------------------------- Process exited after?2.047?seconds?with?return?value?0 請按任意鍵繼續. . .

聲明:

本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

總結

以上是生活随笔為你收集整理的C 析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。