標準C 語言day02

2021-09-26 06:01:49 字數 1706 閱讀 9185

一、類和物件

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了 無符號代表的是資料,有符號代表的是數字 當表達...