C 學習筆記2 物件陣列與物件指標

2021-07-10 17:31:05 字數 2782 閱讀 2588

一.物件陣列

物件陣列是指每乙個陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,可以把這一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員。定義乙個一維陣列的格式如下:

類名 陣列名【下標表示式】

在建立陣列時,同樣要呼叫建構函式。有幾個陣列元素就要呼叫幾次建構函式。

1.類的物件陣列的初始化問題

1>用只有乙個引數的建構函式給物件陣列賦值:如果建構函式只有乙個引數,在定義物件陣列時可以直接在等號後面的花括號內提供實參。例如:

#include

using

namespace

std;

class exam

int get_x()

};int main(void)

;//用只有乙個引數的建構函式給物件陣列賦值

for(int i=0;i<4;i++)

輸出結果為:

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標# ./a.out

1122

3344

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標#

【分析】上例中在執行語句「exam ob1[4]=;」時,定義了類exam的1個物件陣列,其含有4個物件陣列元素,定義時共四次呼叫帶參構造,分別用實參11,22,33,44初始化物件陣列元素ob1[0]、ob1[1]、ob1[2]和ob1[3]的資料成員x。並且與基本資料型別的陣列一樣,在使用物件陣列時也只能訪問單個陣列元素。

2>用不帶引數和帶1個引數的建構函式給物件陣列賦值。例如:

#include

using

namespace

std;

class exam

exam(int n)//只有乙個引數的建構函式

int get_x()

};int main(void)

;//用只有乙個引數的建構函式給物件陣列賦值

exam ob2[4]=;//其餘兩個物件沒有傳實參,系統會呼叫無參構造

for(int i=0;i<4;i++)

輸出結果為:

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標# ./a.out

1122

3344

5566

123123

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標#

3>用帶有多個引數的建構函式給物件陣列賦值。

若建構函式中有多個引數,在定義物件陣列時,只需在花括號中分別寫出建構函式並且指定實參即可。例如:

complex com[3]=;
由於這個物件陣列有3個物件陣列元素,因此在建立物件陣列時,3次呼叫建構函式,對每乙個物件陣列元素初始化。每乙個元素的實參分別用括號包起來,對應建構函式的一組形參,不會產生混淆。

例子**如下:

#include

#include

using

namespace

std;

class complex//定義帶有預設引數的建構函式,用成員初始化列表對資料成員初始化

~complex()

};int main(void)

; cout

<<"複數1的絕對值是:"

<0].abscomplex()<<"複數2的絕對值是:"

<1].abscomplex()<<"複數3的絕對值是:"

<2].abscomplex()0;}

輸出結果如下:

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標# ./a.out

複數1的絕對值是:2.45967

複數2的絕對值是:5.5

複數3的絕對值是:8.59127

destructor

called.

destructor

called.

destructor

called.

root@nana-pc:/home/xiyou/code/c++/物件陣列與物件指標#

二:物件指標

每乙個物件在初始化後都會在記憶體中占有一定的空間。因此,既可以通過物件名訪問乙個物件,也可以通過物件位址來訪問乙個物件。物件指標就是用來存放物件位址的乙個變數。宣告物件指標的一般語法形式為:類名 *物件指標名

1>用指標訪問單個物件成員:

eg:

myclass

my;myclass *pmy;

pmy=&my;

pmy->get();

2>用指標訪問物件陣列:

eg:

exe ob[2];

exe *p;

ob[1].set(10);

ob[2].set(20);

p=ob;//只有陣列名,沒有下標,這時該陣列名代表第乙個元素的位址

p->show();

p++;

p->show();

結果為:

10

20

C 學習 四 物件陣列與物件指標

2 物件指標 1.1 格式 一維陣列格式 類名 陣列名 下標表示式 例 有五個學生的分數需要描述,定義score陣列,每乙個陣列元素都是score類的乙個物件。score rec 5 定義類score的物件陣列rec,含有5物件陣列物件。在建立陣列時,同樣要呼叫建構函式。有幾個陣列元素就要呼叫幾次建...

C 總結 02物件陣列與物件指標

物件陣列是指每個陣列元素都是物件的陣列,定義乙個一維陣列 類名 陣列名 下標表示式 注 建立陣列時,同樣要呼叫建構函式,有幾個陣列元素就要呼叫幾次建構函式和析構函式 物件陣列訪問時只能訪問單個陣列元素,即單個物件 陣列名 下標 成員名 include using namespace std clas...

C 基礎學習(5) 物件陣列和物件指標

4.this指標 1.物件陣列的定義和使用說明 在建立物件陣列的時候需要呼叫建構函式,有多少個物件就要呼叫多少次建構函式 如果物件陣列所屬類有帶引數的建構函式,可用初始化列表按順序呼叫建構函式,使用複製初始化來初始化來初始化每個陣列元素 如果物件陣列所屬類有單個引數時,定義陣列時可以直接在初始化列表...