1 this
任何對類成員的直接訪問都被看成this的隱式引用,this是乙個常量指標 (class *const),不允許改變this中儲存的位址。
常量成員函式:在引數列表後面加乙個const,表示this是乙個指向常量的指標(const class *const this);
不能再乙個常量物件上呼叫普通的成員函式,因為this是乙個指向非常量的常量指標,因此無法將常量成員賦給this指標,這時在引數列表之後新增乙個const可以解決問題,所以說這個const其實是將this修改為指向常量的常量指標。
2 建構函式
1)建構函式的名字和類名相同
2)建構函式沒有返回型別
3)建構函式不能被宣告為const型別。
4)建立類的const物件時,直到建構函式完成初始化,物件才能真正取得其常量屬性。
3 合成預設建構函式
預設建構函式,不接受任何引數,因此在類中可以定義預設建構函式,但是問題在於若程式定義了其他建構函式的話,那麼編譯器是否還會生成這個,還是根據編譯器而異???。
若程式沒有顯式的定義建構函式,則編譯器會合成乙個預設建構函式(合成預設建構函式)。
預設建構函式的初始化類的規則為:
1)如果存在類內的初始值,用它來初始化成員(c++11新標準)
2)否則,預設初始化該成員。
4 合成預設建構函式的風險
合成預設建構函式適合那些簡單的類
1)定義在塊中的內建型別或復合型別被預設初始化的話,那麼它的值是未定義的。
2) 有時候編譯器無法為某些情況下生成預設建構函式,如類中包含其他類型別,若類中的類型別沒有預設初始化函式,則編譯器無法合成預設初始化函式。
5 =default
c++11新標準中,如果需要預設行為,那麼可以通過在引數列表後面寫上=default來要求編譯器生成建構函式。
6 某些類不能依賴於合成的版本(先記者,之後再來補充)
管理動態記憶體的類。vector string等有完備的資源管理 在類中無需擔心其構造和析構,賦值問題。
7 訪問許可權實現了封裝。
class 預設訪問許可權是private,在第乙個訪問控制符之前是這樣。
struct 預設訪問許可權是public。
8 封裝
所謂封裝就是將類的實現的細節隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。
封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是通過外部介面以及特定的訪問許可權來使用類的成員。
優點:1 確保使用者**不會無意間破壞封裝物件的狀態。其實提供訪問方式還是可能被修改,但是可以降低風險。
2 被封裝的類的具體實現細節可以隨時改變,而無須調整使用者級別的**。
9 友元函式
友元宣告只能出現在類定義的內部,雖然不受訪問控制符的限制但是最好集中定義在第乙個控制符之前。
友元函式需要兩個宣告,乙個在函式體中,乙個在函式外,這兩個最好放在同乙個標頭檔案中。
類的外部也需要該函式相應的宣告,從而使得該函式可見。
struct x
x() //錯誤:f還沒有被宣告
void g();
void h();
};void x::g() //錯誤:f還沒有被宣告
void f(); //宣告那個定義在x中的函式
void x::h() //正確:現在f的宣告在作用域中了
10 函式過載
函式過載包括一般的函式在其作用域內,還有就是成員函式。(之前一直以為只有類成員函式才可以,誤解了)
11 可變資料型別
即使是在const類也可以被修改,在變數的宣告中加入mutable 關鍵字。乙個const成員函式可以改變乙個可變成員的值(按理說不可以)。
12 *this
從const成員函式返回*this,之前提過的const 改變了this 的型別,因此需要注意的是需要注意此時返回*this 引用的話返回值的型別。
13 類的作用域
類的定義分兩步處理:
首先,編譯成員的宣告。
直到類全部可見後才編譯函式體。
型別名要特殊處理,一般情況下,內層作用域可以重新定義外層作用域中的名字,即使該名字已經在內層已經使用過。但是型別名不可以,所以型別名需要在類開始就定義,這樣保證了類內用的一直是同一種型別。
第01章 基礎知識
1.1 組合語言的組成 組合語言發展至今,由以下3類指令組成 彙編指令 機器碼的助記符,有對應的機器碼。偽指令 沒有對應的機器碼,由編譯器識別,計算機並不執行。其他符號 如 等,由編譯器識別,沒有對應的機器碼。組合語言的核心是彙編指令,它決定了組合語言的特性。1.2 指令和資料 指令和資料是應用上的...
第1章 基礎知識
機器語言是機器指令的集合,由0和1組成,但是很長很複雜,組合語言因此產生。組合語言的主體是彙編指令。彙編指令是機器指令的便於記憶的書寫格式。程式設計師寫完彙編指令通過編譯器轉換為機器碼,機器碼再傳到計算機執行。組合語言有以下三類 1彙編指令 助記符,有對應機器碼 2.偽指令 沒有對應機器碼,編譯器執...
學習筆記 第5章 網路基礎知識
1 從硬體角度看,計算機網路由如下裝置組成 1 計算機及終端裝置,通稱為主機 host 其中部分host充當伺服器,部分host充當客戶端。2 前端處理機 fep 或通訊處理機或通訊控制處理機 ccp 負責傳送 接手資料,最簡單的ccp是網絡卡。3 路由器 交換機等連線裝置。交換機將計算機連線成網路...