久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2106|回復: 0
打印 上一主題 下一主題
收起左側

c++中顯示析構問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-10 23:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
昨天有人問我能不能顯示調用析構函數。
我的回答是可以。但為什么顯法調用析構函數跟沒有調用結果一樣的呢(未用new申請內存空間)。
至于為什么,我今天在這里說下。

用構造函數創建對像后,程程序負責跟蹤對象直到過期為止。 對象過期時,程序將會自動調用一個析構函數。

構析函數完成清理工作。

例如 如構造函數用new分配內存,則析構涵數將使用delete來釋放這些內存。

下面是這篇帖子子的重點。


什么時候應調用析構函數呢?這個由編譯器決定,通常不應在代碼中顯示調用析構函數(布局new除外),如果創建的是靜態存儲類對象。則其析構涵數將在程序結束時自動調用。如果創建的是自動存儲類對象,則其析構函數將在程序執行完代碼塊時自動調用。

如果對象是通過new創建的,則它將駐留在堆內存或自由存儲區中,當使用delete來釋放內存時,其析構函數將自動調用。
最后,程 序可以創建臨時對象來完成特定的操作,在這種情況下,程序將在結束對該對象的使用時自動調用其析構函數。

由于在類對象過期時析構函數將自動被調用,因此必須有一個析構函數。如果程序員沒有提供析構函數,編譯器將隱式的聲名一個默認析構函數,并在發現對象被刪除的代碼后,提供默認析構函數的定義。
上面我只是簡要的說了下析構函數。

#include<iostream>
using namespace std;
class wyz
{
private:
         int x;
public:  
     wyz(int g)
{  
          x=g;
     
        cout<<"調用構造函數\n";
}
    ~wyz()
{
   
       cout<<"調用析構函數\n";
}
    void fun()
{
        cout<<x<<endl;
}  
};

int main()
{
       wyz gg(10);
       gg.~wyz();
       gg.fun();
   

      return 0;
}

下面就說說為什么顯示調用函數(未使用new申請內存)和沒有調用結果一樣。
首先析構函數和其它成員函數沒有多大區另,區別就是函數名特殊(名前加上了~),其次他會被編譯器自動調用。
除了這兩點之外他和別的成員函數沒什么區別(構造函數與此不同,這里就不說了)。
一個對象什么時候過期由他的作用域決定。對像過期了他里面存儲的數據也就不存在了。

當對象的引用或指針超出作用域時,不會運行析構函數。只有刪除指向動態分配對象的指針或實際
對象(而不是對象的引用)超出作用域時,才會運行析構函數。

在上面的代碼中gg這個對象的作用域中是從main()的左大括號到右大括號。
只要在這個作用內對象gg就存在。
你雖然調用了wyz類的析構函數,但gg沒有超出他的作用域故它是存在的。

說白了很簡單,一句話析構函數的作用是完成清理。要清理什么還是要程序員指定的。編譯器只不過幫助我們管理這個,讓程序員創建一個對象后就不會管理它的銷毀時間。
上面的這個析構函數里面什么也沒有定義。它什么也不做。(相當于一個空函數)。你在這里調用他就跟你調用一個空函數的結果一樣。
要不問什么上面的程序中會調用兩次析構函數。第一次不用說是你自己調用的,第二次是編譯器調用的。對象并不是你調用了析構函數它就不調用了,只有在對象過期它才會銷毀。

很多人對析構函數的認識是這樣的。他們認為只要調用了析構函數對象就不存在了。這種認為是錯誤的。對象或變量的銷毀是由他所在的作用域決定的。(靜太的除外)沒有超出這個作用域它就存在,超出這個作用域就銷毀它。
到此相信大家都明白了吧。

至于用采用時new時的效果今天在這里就不說了。

最后聲名下,上面的都是我自己查找資料和自己的認為。有什么不對的地方望老師們能給指正出來。謝謝

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内毛片毛片毛片毛片 | 欧美视频 亚洲视频 | 国产精品视频网站 | 一区二区不卡高清 | 综合第一页 | 九九热在线免费观看 | 在线视频a | 欧美一区二区三区在线 | 色必久久| 亚洲国产成人久久久 | 欧美亚洲综合久久 | 国产农村妇女毛片精品久久麻豆 | 在线看黄免费 | 日本一区二区三区四区 | 日本手机在线 | 国产欧美一区二区久久性色99 | 久久久久成人精品亚洲国产 | 国产欧美日韩在线播放 | 欧美黄色一级毛片 | 亚洲一区二区精品视频 | 久久久久久免费看 | 在线色网站| 色综合久久天天综合网 | 国产精品99久久久久久宅男 | 久久成人免费视频 | 精品麻豆剧传媒av国产九九九 | 欧美色性 | 九九视频在线观看视频6 | 国产精品一区二区久久 | 欧美综合色 | 国产黄色大片在线免费观看 | 伊人超碰 | 国产免费一区二区 | 日韩精品av一区二区三区 | 在线91 | 视频一区二区在线 | 欧美一区二区三区在线看 | 精品久久久久久久久久久久久久久久久 | av av在线 | 亚洲国产精选 | 日本不卡在线视频 |