国产探花免费观看_亚洲丰满少妇自慰呻吟_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ù)不能,這對冤家也算扯平了吧

主站蜘蛛池模板: 丹凤县| 丰城市| 萝北县| 五指山市| 杭锦旗| 油尖旺区| 峡江县| 赞皇县| 商丘市| 邻水| 石渠县| 鄢陵县| 繁昌县| 泸州市| 嵩明县| 刚察县| 淅川县| 阿拉善右旗| 马龙县| 鸡泽县| 南华县| 嘉定区| 兴义市| 平塘县| 凤冈县| 静宁县| 乌兰察布市| 清苑县| 西藏| 尚志市| 嫩江县| 赤壁市| 襄城县| 黔西| 靖边县| 鹤庆县| 乐至县| 庄浪县| 巴南区| 舞阳县| 安泽县|