C++primer -2

類和對象

一,對象的大小不考慮方法和靜態變量
cpp中 struct-》public class
對象產生-》1.開闢內存(產生this指針)2.調用構造函數
對象析構-》1.處理對象佔用的外部資源 2.釋放對象內存

成員方法中參數列表中隱藏有一個對象的地址(C *const this)
類體內定義的方法被處理成內聯方法(編譯時檢查)

1>拷貝構造:有指針時默認拷貝構造函數會發生淺拷貝(析構出錯),要自定義拷貝構造函數
2>賦值運算法重載:1.防止自賦值 2.釋放this 3.重新分配內存 拷貝數據
二,對象生存週期:
1>臨時對象:(沒有出現類名)CGood g1 = CGood(xxxx);
注:臨時對象去拷貝構造對象時 臨時對象會被優化掉;所以在函數傳參時 傳引用可以避免產生臨時對象;
臨時對象可以使用引用 但是不能使用指針(語句結束就會析構)
2>隱式生成臨時對象:
自定義類型的產生的臨時量是變量 隱式生成臨時對象是常對象
要使用常引用
3> 函數中 對象生存週期:
如果函數的返回的是一個對象=》在調用該函數之前會在主函數的棧上開闢一個臨時內存(給函數返回的對象用)
注: 減少開銷=》1.傳參傳引用 2.返回臨時對象 3.初始化的方式接收返回值

三,靜態/常量
靜態成員變量要在類外初始化 且不計入對象的大小 所有的對象共享;
靜態成員方法不依賴對象 只依賴類作用域(實參列表裏面沒有this),只能訪問靜態成員變量,但是普通方法也可以使用常成員

常對象不能使用普通方法=》實參形參列表不匹配:常對象實參(const CGood const *this)

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