c++析構函數作用域


析構函數與構造函數一般是同一個話題。構造函數與析構函數的執行順序剛剛好相反。在類裏面的繼承關係更爲之顯著。

 class Studnet{
        Student(int s,int n){...}
            ~Student(){cout<<"Student XG";}
};

class Universe:public Student{
      public:
           Universe(int q,int w){...}
           ~Universe(){cout<<"Universe XG";}

};                            //構造函數的執行順序是 基類->子類;析構函數的執行順序是  子類—>基類;需要提醒的是這個是對於子類與基類的關係;                                                             對於兩個不相關的類的
對於c++基礎,貫徹全部內容的就是   析構函數和構造函數   的執行順序【(當然像 繼承 封裝 多態;還是再簡單的提及一下吧,畢竟這是博文寫的就是c++學習筆記)

繼承 :private(私有繼承),protected(保護基礎),public(公有繼承)

class A{   private:.........

public:.......

protected:.......};   

class B:privatA{ private:.........

public:.......

protected:.......}; //基礎的就不說了,說些需要注意的:無論是私有還是公有還是保護繼承,基類的私有始終只是基類所特有的(即無法繼承private的東西)。你繼承來的只能是基類裏protected,和 public 的;

public繼承基類裏的公有和保護的(public 繼承,基類 公有的還是繼承爲公有的,私有的還是繼承爲私有的);

protected繼承:基類裏的public 和protected 到了 派生類 就變成 protected;

private繼承:基類裏的public和protected 到了派生類就成  private;

(繼承是把基類的以 protected(例如) 把全部(基類的public和protected)可以繼承的 繼承爲  (protected));


多態:說白了就是重載和虛函數(virtual)



回到正題:析構函數 和構造函數的順序

       以爲後頭的很多虛函數 普通函數 重載函數 。。。運算符重載 。。。。繼承。。。。。

      都有很多的  析構函數和構造函數的考究

記得你頭疼,但是呢你知道原理之後一切就變得有趣了,有規律可循;

c++是一種編譯環境  不是一門語言(這句話是一位;老師強調的,因爲c++延續了很多c語言的語法,而且很多語法都可以用,是編譯器裏寫好的一些規則,對這句話有異議的可以留言大家探討下)

噢對了那個規律呢,就是你要知道 編譯器是怎麼解讀 c++代碼的: windows 系統的  vc++6.0 和 linux 的gcc  都是目前最流行的c++編譯器,他對析構函數的存儲呢

是用堆棧的形式 ;在main函數裏,你生成一個對象就把析構函數入棧。等到你程序跑完,return 0;

後 就開始讀取堆棧裏的析構函數對對象進行析構;離return 語句最近的那個  對象是最後才入棧的,先進後出。所以他是最先進行析構的;(講了這麼多呢要講的就是這個,其它的具體規則都可以在網上搜索到,所以我說的只是這個思想)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章