C++
1. const成員變數的初始化、
1. 在建構式中必須給初值、
2. 不可以通過賦值來給初值、只能初始化串列 中給值、
2. 默認建構式、
1. 即沒有函式引數的函式、
2. 生成物件是肯定會呼叫建構式、如果沒有建構式則會默認初始化、
3. 如果沒有默認建構式則編譯器會隱式的自動定義一個默認建構式、此建構式沒有任何引數、即稱為合成的默認構造引數、
4. 只有在沒有==建構式的前提下系統才會創建合成的默認建構式==、一旦在類中定義建構式、無論建構式內容及其是否帶有引數、系統均不會在創建合成的默認建構式、
3. =default; =delete;
1. a()=default;——編譯器自動為帶有default的函式==自動生成函式體==、相當于a() {}、只是系統替換了{}、
2. 帶有引數的函式不可以使用、==只能用于默認建構式==、
3. a()=delete;——顯示的禁用函式、系統不會在生成默認建構式、不會自動生成函式體、于default相反、
4. 拷貝建構式、
1. 從一個函式中回傳一個物件、
2. 默認情況下類物件的拷貝是每個成員變數逐個拷貝、
3. 函式默認引數必須放在函式宣告中、除非這個函式沒有函式宣告、
4. 拷貝建構式就是一個類的建構式的第一個引數、是所屬類的型別參考、且還有其它額外引數、這些額外的引數都有默認值、
5. 拷貝函式的主要作用、是在一定的時候被系統自動呼叫、
6. ==復制建構式(拷貝建構式)只能有一個==、
7. 建議拷貝函式的第一個引數帶有const 不要宣告explicit(禁止隱式型別轉換)explicit建議使用在帶一個形參的拷貝函式中、
8. 使用拷貝函式后、將丟失默認的類拷貝物件的、也就是說、不再是逐個成員變數的拷貝、
9. 沒有給定義一個拷貝建構式那么編譯器將會為我們定義一個拷貝建構式(合成拷貝函式)、
10. 一般合成拷貝函式拷貝是默認類中的成員逐個拷貝、
11. 每個成員變數型別決定如何拷貝、成員變數是整型的話就會直接將值拷貝過去、
12. 成員是型別別的話就會呼叫這個類的拷貝建構式來進行函式拷貝、
13. 自己定義拷貝函式就會替代系統合成的拷貝函式、自己拷貝函式需要給類的成員賦值、否則將會出現函式成員沒有值、
5. 頻繁的申請和回收記憶體會導致記憶體上產生大量的空洞、從而導致最終無法申請記憶體、因此DDK提供啦Lookaside結構來解決此問題、
6. 可以將Lookaside物件看成一塊記憶體容器、在初始化時、向windows申請一塊較大的記憶體、以后需要申請記憶體時直接從Lookaside申請而非是windows申請、從而解決此問題、如果Lookasids物件記憶體不夠時會向作業系統申請更多的記憶體、
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/167645.html
標籤:C++
上一篇:學生,打算購買服務器,做一個小型站,服務器需要什么配置
下一篇:桶排序的簡單實作
