C 類和物件(二)

2021-07-25 06:29:45 字數 4641 閱讀 7298

類和物件

類的物件如何引用私有資料成員

1、通過公有函式為私有成員賦值

class  test

void  printxy(void) ;

void  main(void)

2、利用指標訪問私有資料成員

class  test

void  getxy(int  *px,  int *py) //提取x,y值

void  printxy(void);

void  main(void)

輸出: 3

53、利用函式訪問私有資料成員

class  test

int  getx(void) //返回x值

int  gety(void) //返回y值

void  printxy(void);

void  main(void)

函式值就是私有成員變數的值

4、利用引用訪問私有資料成員

class  test

void  getxy(int &px,  int &py) //提取x,y值

void  printxy(void);

void  main(void)

輸出: 3

5

成員函式的過載

類中的成員函式與前面介紹的普通函式一樣,成員函式可以帶有預設的引數,也可以過載成員函式 。

過載時,函式的形參必須在型別或數目上不同。

可以有預設引數的成員函式,若形參不完全預設,則必須從形參的右邊開始預設。

預設引數的成員函式

class a

void set(float a,float b=10.0)

void print(void) ;

void main(void)

定義類的指標及如何用指標來引用物件

class a

void set(float  a,float  b)

void print(void) ;

void main(void)

定義類的陣列及陣列中元素的引用

void main(void)

}

返回引用型別的成員函式(可以返回私有資料成員的引用)

class a

//返回x的引用

void set(float a,float b)

void print(void) ;

void main(void)

線性表的應用

線性表用來存放若干個整數,用乙個指標指向其存放整數的首位址。當存放的資料大於原先開闢的空間時,線性表自動動態開闢空間,儲存所有的整數。

線性表有三個引數來描述:指向線性表儲存空間首位址的指標變數list;無符號整數nmax,指示表的最大長度;無符號整數nelem,指示表中實際所放的資料個數。

實際上,線性表相當於乙個整型陣列,list為陣列的首位址,nmax為陣列在記憶體開闢的空間數,nelem為陣列中實際存放的元素個數。只不過陣列的空間是動態開闢的。

this 指標

不同物件佔據記憶體中的不同區域,它們所儲存的資料各不相同,但對成員資料進行操作的成員函式的程式**均是一樣的。

當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,也隱含使用this指標。

this指標具有如下形式的預設說明:

stu   *const    this;

即 this 指標裡的位址是乙個常量

·建構函式和析構函式是在類體中說明的兩種特殊的成員函式。

·建構函式是在建立物件時,使用給定的值來將物件初始化

·析構函式的功能正好相反,是在系統釋放物件前,對物件做一些善後工作。

·建構函式可以帶引數、可以過載,同時沒有返回值。

·建構函式是類的成員函式,系統約定建構函式名必須與類名相同。建構函式提供了初始化物件的一種簡單的方法。

class a//建構函式,初始化物件

float sum(void)

void set(float  a,float  b)

print(void) ;

void main(void)

對建構函式,說明以下幾點:

1.建構函式的函式名必須與類名相同。建構函式的主要作用是完成初始化物件的資料成員以及其它的初始化工作。

2. 在定義建構函式時,不能指定函式返回值的型別,也不能指定為void型別。

3. 乙個類可以定義若干個建構函式。當定義多個建構函式時,必須滿足函式過載的原則。

4.建構函式可以指定引數的預設值。

5.若定義的類要說明該類的物件時,建構函式必須是公有的成員函式。如果定義的類僅用於派生其它類時,則可將建構函式定義為保護的成員函式。

由於建構函式屬於類的成員函式,它對私有資料成員、保護的資料成員和公有的資料成員均能進行初始化。

·

對區域性物件,靜態物件,全域性物件的初始化對於區域性物件,每次定義物件時,都要呼叫建構函式。

·

對於靜態物件,是在首次定義物件時,呼叫建構函式的,且由於物件一直存在,只呼叫一次建構函式。

·

對於全域性物件,是在main函式執行之前呼叫建構函式的

C 類和物件(二)

隱含的this指標 1 每個成員函式都有乙個指標形參,它的名字是固定的,稱為this指標,this指標是隱式的。建構函式比較特殊,沒有這個隱含this形參 2 編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指標。3 this指標是成員函式隱含指標形...

C 學習 類和物件(二)

先來看下面 include using namespace std class person int main 執行結果 zyc localhost lession class a.out jack 20 123456 rose 21 654321 為什麼呼叫同樣的函式,但是結果卻不一樣呢?原因就在...

C 類和物件 類和物件

c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...