1. 程式人生 > >C++筆記 第二十四課 經典問題解析二---狄泰學院

C++筆記 第二十四課 經典問題解析二---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習C++編譯環境:Linux

第二十四課 經典問題解析二

1.關於析構的疑問

當程式中存在多個物件的時候,如何確定這些物件的析構順序?
單個物件建立時解構函式的呼叫順序
1.呼叫父類的析構過程(後續課程中講解)
2.呼叫成員變數的解構函式(呼叫順序與宣告順序相同)
3.呼叫類自身的解構函式
解構函式與對應建構函式的呼叫順序相反。
多個物件析構是
析構順序與構造順序相反

24-1 構造與析構順序

2.關於析構的答案

對於棧物件全域性物件,類似於入棧與出棧的順序,最後構造的物件被最先析構!!
堆物件

的析構發生在使用delete的時候,與delete的使用順序相關!!

3.關於const物件的疑惑

const關鍵字能否修飾類的物件?如果可以,有什麼特性?
const關鍵字能夠修飾物件
const修飾的物件為只讀物件
只讀物件的成員變數不允許被改變
只讀物件是編譯階段的概念,執行時無效
C++中的const成員函式
const物件只能呼叫const成員函式
const成員函式中只能呼叫const成員函式
const成員函式中不能直接改寫成員變數的值
const成員函式的定義:Type ClassName::function(Type p)const
成員函式宣告之後,函式體之前
類中的函式宣告與實際函式定義中都必須帶const關鍵字

24-2 類的const函式初探

4.關於類成員的疑問

成員函式和成員變數都是隸屬於具體物件的嗎?
從面向物件的角度
物件由屬性(成員變數)和方法(成員函式)構成
從程式執行的角度
物件由資料和函式構成
資料可以位於棧,堆和全域性資料區
函式只能位於程式碼段
結論
每一個物件擁有自己獨立的屬性(成員變數)
所有的物件共享類的方法(成員函式)
方法能夠直接訪問物件的屬性
方法中的隱藏引數this用於指代當前物件

24-3 成員函式的祕密

小結
物件的析構順序與構造順序相反
const關鍵字能夠修飾物件,得到只讀物件
只讀物件只能呼叫const成員函式
所有物件共享類的成員函式
隱藏的this指標用於表示當前物件