c 筆記 類class及相關知識點

2021-10-19 08:48:12 字數 3030 閱讀 7659

5.this指標

6.友元

7.成員物件

1.類和物件的概念

:即class,代表著一類物件

物件:是類的例項,class裡的每乙個變數、每乙個函式都是乙個物件

class起到封裝的作用,將不同的函式或變數封裝在不同的類之下。

區別於結構體的封裝

2.三種訪問型別

內含三種訪問型別,且格式為:

class 類名

;

例子有:

class point//函式體省略

void point_move(int x, int y) //函式體省略

void point_origin();//這裡只是宣告乙個函式

char point_name[10];

private://表示相關屬性,私有的

int x_0;

int y_0 = 10;//錯誤,不能在類中被顯示的初始化

};void point::point_origin()

void main()

關鍵字private、public、protected稱為訪問許可權修飾符訪問控制修飾符,用於限制類成員的控制訪問範圍,如果沒有使用,預設為private,這些關鍵字的宣告順序和次數都是任意的。

類中的成員具有不同的訪問許可權修飾符。 從訪問許可權上來講,類的成員又分為公有的

(public)私有的(private)和保護的(protected)3類:

除了靜態資料成員(static)外,不能在類中被顯示的初始化

3.內聯函式

應對於巨集函式,一種比較特殊的函式

內聯函式有三種:

(1)直接在類內部定義。

(2)在類內部宣告,加上inline關鍵字,在類外部定義。

(3)在類內部宣告,在類外部定義,同時加上inline關鍵字。注意:此種情況下,內聯函式的定義通常應該放在類定義的同一標頭檔案中,而不是在原始檔中。這是為了保證內聯函式的定義在呼叫該函式的每個原始檔中是可見的。

內聯函式不是必須要inline,內聯函式用於替代巨集函式,僅適用於簡單一點的函式,複雜函式會被編譯器普通化

(普通函式的呼叫必須將程式執行的順序轉移到函式所在位址中,執行完函式後,再返回到之前的位址;而內聯函式則不需要這些步驟,它直接展開了)

4.建構函式、析構函式、拷貝建構函式

4.1建構函式

是乙個特殊的公共成員(public)函式,在建立類物件時會被自動呼叫,預設也是會存在的,即使沒有編寫。

4.2析構函式

類中乙個用於清理物件的特殊成員函式,與建構函式相對,釋放資源(如動態分配記憶體之後),自動呼叫

4.3拷貝建構函式

乙個特殊的建構函式,只有乙個引數,且這個引數是對類物件的引用,即一般構造函式呼叫於引數是一般資料時,此構造函式呼叫於引數是類的物件,意為拷貝引數物件的值賦值給定義的新的物件,其他特性同建構函式

普通建構函式只在物件建立時被自動呼叫,而拷貝建構函式可以在下面3種情況下被自動呼叫。

class point

/* point(int x = 1,int y = 1)

*/ ~ point()

point(const point &point)

...//其他省略

}int main()

注意:

呼叫乙個類,必然會先呼叫其建構函式,最後再呼叫析構函式,所以構造/析構函式裡有輸出,這時也會輸出(不要忘了)

用堆運算子new給單個物件分配空間時,就是呼叫建構函式,如果是陣列,就呼叫n遍;用delete刪除時,就是呼叫析構函式。另外,使用了new/delete,構造/析構函式的呼叫順序就可以人為改變,但對於乙個物件還是先構造後析構。

5.this指標

this指標是用於儲存當前物件位址而自動生成的隱含指標

class point

void outpoint()

private:

int x_0;

int y_o;

...//其他省略

}

6.友元

介於類的封裝性和隱藏性,只有類的成員函式才能訪問類的私有成員,外部函式只能訪問類的公有成員。為了一些特殊情況,引入友元來訪問類的私有成員和保護成員。

友元可以是函式,即友元函式;也可以是類,即友元類

友元函式是外部的函式,只是為了訪問私有成員而寫到了類的裡面。犧牲了類的封裝性

格式為:friend 《資料型別》 《友元函式名》(形參)

例如:

class point

friend void outpoint(point &p);//在內部宣告一下即可

private:

int x_0;

int y_o;

...//其他省略

}void outpoint(point &p)//引用的時候必須要加上物件名

void main

7.成員物件

乙個類的成員是另外乙個類的物件時,該物件就稱為成員物件

成員函式在類中也需要被初始化,同樣在建構函式中被初始化,為了明白到底在哪個建構函式中被初始化,因此對建構函式新增初始化列表,定義如下:

《類名》 :: 《類名》 (《總參數列》): 《成員物件名1>(《形參表1>), 《成員物件名2>(《形參表2>), …

C 相關小知識點筆記

float4個位元組 double8個位元組 以最大基本型別開闢空間 若干屬性位置順序影響開闢空間 int double int 24個位元組 double int int 16個位元組 pi類屬性 物件屬性 常量宣告實現都要加const 唯讀不寫 class circle static doubl...

c 相關知識點

類繼承 基類指標與引用可以隱示的指向派生類的物件,但只能使用基類的函式。多型屬於豎向函式過載,派生類函式的名與基類函式得名一樣,但在呼叫多態函式時有些區別,如果該函式是通過引用或者指標而不是物件呼叫的,如果這個函式在多型過程中沒有使用關鍵字virtual那麼程式將根據引用或者指標選擇實現方法。如果函...

類的相關知識點

類的成員屬性私有化 include include using namespace std 成員屬性設定為私有 1.可以自己控制讀寫許可權 2.對於寫可以檢測資料的有效性 設定人類 class person 獲取姓名 string getname 讀年齡 intgetage 寫入情人 void se...