国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 析構(gòu)函數(shù)與變量的生存周期實例詳解

2020-01-26 14:04:57
字體:
供稿:網(wǎng)友

 C++ 析構(gòu)函數(shù)與變量的生存周期實例詳解

這篇介紹了析構(gòu)函數(shù),是我的讀書筆記,我希望它夠簡短但又比較全面,起到復習的作用。如果有一些C++知識記不清楚了,它可以幫你很快回憶起來。

析構(gòu)函數(shù)(destructor)的名字與類名相同,但是前面要加“~”。析構(gòu)函數(shù)沒有參數(shù)和返回值,當然也就不能被重載。

何時調(diào)用析構(gòu)函數(shù)

析構(gòu)函數(shù)在對象消亡時自動調(diào)用,這是都了解的情況,但是實際上這還隱含的說:函數(shù)的參數(shù)對象以及作為函數(shù)返回值的對象,在消亡時也會引發(fā)析構(gòu)函數(shù)調(diào)用。

#include<iostream>using namespace std;class CNum {public:  int num;  ~CNum() { cout << "destructor" << endl; }  CNum() { num = 0; cout << "constractor CNum()" << endl; }  CNum(CNum & n) { num = n.num; cout << "constractor CNum(CNum & n)" << endl; }};CNum fun(CNum n) {  cout << "fun()start" << endl;  n.num = 3;                //這里的修改只是對形參的修改,對實參沒影響  return n;}int main() {  CNum n1;  n1 = fun(n1);  return 0;}

運行結(jié)果:

constractor CNum()
constractor CNum(CNum & n)  //構(gòu)造形參n
fun()      
constractor CNum(CNum & n)  //構(gòu)造作為返回值的臨時對象
destructor            //fun的返回值是一個臨時對象,臨時對象的生存周期只有一條語句
destructor            //離開fun(),形參n消亡
destructor            //main結(jié)束時局部變量n1消亡

請按任意鍵繼續(xù). . .

調(diào)用函數(shù)時使用傳引用而不是直接傳遞對象,可以省掉很多次不必要的函數(shù)調(diào)用,特別是這個函數(shù)會被頻繁調(diào)用的時候。

虛析構(gòu)函數(shù)

析構(gòu)函數(shù)可以是虛函數(shù),但是構(gòu)造函數(shù)不能。(想一想構(gòu)造函數(shù)可以重載,但析構(gòu)函數(shù)不能,這對冤家也算扯平了吧

主站蜘蛛池模板: 普宁市| 临夏县| 惠来县| 常熟市| 浦县| 梅州市| 南丰县| 理塘县| 奉化市| 黔西县| 华亭县| 西藏| 长葛市| 岳池县| 永泰县| 屏东县| 西华县| 鞍山市| 包头市| 江北区| 林周县| 邻水| 绥棱县| 江孜县| 许昌县| 崇左市| 宿松县| 新巴尔虎左旗| 台山市| 丹凤县| 图木舒克市| 新兴县| 分宜县| 江都市| 北碚区| 印江| 于都县| 资中县| 西贡区| 密云县| 嘉荫县|