孫鑫VC第二課學習筆記

2021-06-15 21:05:32 字數 3013 閱讀 1360

孫鑫

vc第二課學習筆記 掌握

c++

知識點一

知識點二在c

語言中,結構體

struct

中是不能包含函式的,但是在

c++中卻是可以的。

struct

的成員預設是

public

,而class

的成員預設是

private

。public

表示資料成員能夠在類外面被訪問。

private

表示資料成員不能夠在類外面被訪問,只能在類內部訪問。

protected

表示子類和父類之間的關係,在類外面也是不能被訪問的。

知識點三

類和物件的概念:

類是抽象出一些事物共有的屬性。

物件是具有具體的屬性值的事物。

舉例說明:比如說電腦,我們可以定義乙個電腦的類,它具有一些基本的屬性,比如說電腦有乙個主機板,乙個

cpu等。那什麼是電腦的物件呢?一台具體的電腦。比如說你買了一台電腦,它的主機板的華碩的,

cpu是

intel

的。類本身是抽象,本身不可能消亡,但是對於類是有生命的,一台電腦你用了幾年可能就壞了。

類的例項通常情況下就等於類的物件。

知識點四

建構函式與類名相同。

一.建構函式最重要的作用是建立物件本身。

二.c++

規定,每個類必須有乙個建構函式,沒有建構函式,就不能建立任何物件。

三.c++

又規定,如果乙個類沒有提供任何的建構函式,則

c++提供乙個預設的建構函式(由

c++編譯器提供),這個預設的建構函式是乙個不帶引數的建構函式,它只負責建立物件,而不做任何的初始化工作。

四.只要乙個類定義了乙個建構函式,不管這個建構函式是否是帶引數的建構函式,

c++就不再提供預設的建構函式。也就是說,如果乙個類定義了乙個帶引數的建構函式,還想要無引數的建構函式,則必須要自己定義了。

析構函式

一.當乙個物件生命週期結束時,其所占有的記憶體空間就要被收回,這個工作就是由析構函

數來完成。

二.析構函式是「反向」的建構函式,析構函式不允許有返回值,更重要的是析構函式不允

許帶引數,並且乙個類只能有乙個析構函式。

三.析構函式的作用正好與建構函式相反,物件超出其作用範圍,對應的記憶體空間被系統收

回或被程式

delete

刪除時,析構函式被呼叫。

五.根據析構函式的這種特點,我們可以在建構函式中初始化物件的某些成員變數,給其分

配記憶體空間(堆記憶體),在析構函式中釋放物件執行期間所申請的資源。

過載構成的條件:函式的引數型別、引數個數不同,才能構成函式的過載。

第一種情況:

void output()

intoutput()

第二種情況:

void output(int a, int b=5)

void output(int a)

第一種情況是不能構成函式的過載,對於第二種情況,呼叫

output(a)

時也是不可以的。

知識點五

知識點六

知識點七

如果a繼承了b

,那麼建構函式和析構函式之間呼叫順序。

b()->a()->~a()->~b()

知識點八

函式覆蓋是發生在父類和子類之間的。當父類和子類具有相同的函式時,我們例項化子類時,呼叫的是子類的函式。

知識點九

乙個資料型別的轉換,比如說乙個

char

和int

進行轉換,作為乙個型別轉換,那麼他們之間能不能進行型別轉換主要看記憶體模型是否匹配。比如將

int的值付給

char

,只有乙個位元組的內容能夠放到

char

,另外3

個位元組被截斷,就會丟失精度,但是反過來,肯定是可以的。

乙個子類的記憶體布局:

父類物件的記憶體

子類繼承的部分

知識點十

多型性:當

c++編譯器在編譯的時候,發現父類的某個函式是虛函式,這個時候

c++會採用遲繫結的技術,在執行時,依據物件的型別來確認呼叫的哪個函式,這種能力就是

c++的多型性。

純虛函式:

virtual void ***() = 0;

含有純虛函式的類叫做抽象類,是不能被例項化的,如果子類繼承了抽象類,但是沒有實現純虛函式,也是抽象類,不能被例項化。

知識點十一

指標變數本身需要記憶體空間,而引用不需要另外的記憶體空間,只是變數的別名。

知識點十二

每個cpp

檔案單獨編譯,標頭檔案不參與編譯,最後由鏈結器將各個

obj檔案和

c++的標準庫函式標準類庫

link

成可執行檔案。

如何防止標頭檔案重複引用

#ifndef _***_h_

#define _***_h_

#endif

linux學習第二課

今天跟著benjamin學習linux的第二課,主講內容 linux作業系統的檔案 一.linux系統下除了一般檔案外,所有的目錄和裝置 光碟機,硬碟等 都是以檔案的形式存在了。所以這裡就出現了乙個問題,我們怎樣才能使用物理裝置中的資料呢,linux系統是將物理裝置掛載 linux中乙個非常重要的概...

Android學習第二課

android技術結構圖 是針對安卓,對linux kernel進行優化 libraries android rumtime core libraries dalvik virtual machine 常用庫應用程式框架方便了我們的開發 手機的應用程式 android的四大元件 activity s...

jQuery學習第二課

1.jquery 物件和dom 物件 2.dom 物件和jquery 物件的互相轉換 3.jquery 與其它js 庫如何共存 一.jquery物件和 dom物件 1.dom物件 1.1.dom 文件物件模型,每乙份 dom都可以表示成一棵樹 1.2.從dom 樹中可以看出各個元素之間的關係 1.3...