一、類和物件
1、通過分析"物件"的屬性和行為設計出乙個類。
2、類就是資料型別
簡單型別:只能表示乙個屬性(變數),c/c++內建資料型別
陣列型別:可以表示多個屬性(變數),型別必須相同。
結構型別:可以表示多個屬性(變數),但缺少行為(函式)。
類型別:既能表示屬性,也能表示行為,一種復合資料型別。
3、物件就類這種資料型別建立出的例項,相當於結構變數。
class student
;student stu;
二、類的定義與例項化
****
class 類名 : 繼承方式 父類
// 析構函式
~類名(void)
};
2、類的訪問控制限定符
public:公有成員,在任何位置都可以訪問
private:私有成員,只能類(自己)的成員函式中訪問
protected:受保護成員,只能在類(自己)和子類中訪問
注意:類中的成員變數、成員函式預設是 private,結構中的成員變數、成員函式預設是 public。
注意:c++中類和結構的區別只有成員函式和成員變數預設訪問許可權不同。
3、建構函式
1、什麼是建構函式:類的同名函式就是建構函式,沒有返回值。
2、什麼時候呼叫,誰呼叫,呼叫幾次?
建立型別物件時會被自己呼叫(每建立乙個類物件就會呼叫一次),物件整個生命週期中一定會被呼叫一次,只能被呼叫一次。
3、負責幹什麼
成員變數的初始化,分配相關資源,設定物件的初始狀態。
class 類名 : 繼承方式 父類
};
4、物件的建立過程
三、建構函式與初始化列表
1、建構函式可以被過載(同乙個名字的函式有多個不同版本)
2、預設構造是編譯器自動生成的乙個什麼都不做的建構函式(唯一的作用就避免統錯誤)。
注意:當類實現乙個預設構造後,預設構造就不會再自動生成,如果有需要必須顯式地寫出來。
3、無參構造未必無參,當給有參構造的所有引數設定預設形參,呼叫這種建構函式就不需要傳參。
注意:所謂的"編譯器生成的某某函式"其實不是真正語法意義上的函式,而是功能意義的函式,編譯器作為可執行指令的生成者,它會直接生成具有某項功能的二進位制指令,不需要借助高階語言語義上的函式完成此任務。
注意:如果乙個類a是其它類b成員變數,那麼一定要保證它有乙個無參構造,當b的建構函式執行時會先執行成員變數的無參構造,而此時類b是無法給類a成員變數提供引數的。
4、單參構造與型別轉換
如果建構函式的引數只有乙個,那麼test t = n語句就不會出錯,它會自動呼叫單參構造來達到型別轉換的效果。
如果想禁止這種型別轉換需要在單參構造前加 explicit
5、初始化列表
為型別員進行初始化用的。
建構函式(引數):成員1(引數1),成員2(引數2)…
通過初始化列表可以類成員變數傳遞引數,以此呼叫類成員的有參構造。
初始化列表也可以給 const 成員、引用成員進行初始化。
成員的初始化順序與初始化列表沒有關係,而是在類中的定義順序有關。
注意:初始化列表執行類成員變數還沒有定義成功。
Day02 語言元素
日期 2021年1月19日 今天是學習python的第二天,希望可以堅持下去。學習用的教材是github上駱昊編寫的 python 100天從新手到大師 所有編寫的源 均放在github上 變數的型別 變數命名規則 變數命名規則整體上與c語言沒什麼差別,在python可以用中文作為函式名以及變數名,...
c語言學習day02
第二天的記錄,關於c語言的基本資料型別,進製轉換和優先順序的問題 在linux下gcc s c 之後在vi s可以看彙編 的 gcc e c預定義 我的程式 include int main sizeof的應用 include int main 巨集以及const include define da...
c語言的學習day02
2個byte的最大值為65535 當資料的寬度有明顯的限制時,必須是2個byte時,採用short char a 1,a即為0xff,a 1後,前面始終有符號 unsigned char a 1,前面的 會當作資料位處理,當a 1後,可能最後a就為0了 無符號代表的是資料,有符號代表的是數字 當表達...