是指每乙個陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,我們把一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員。
格式: 類名 陣列名[下標表示式]
在建立陣列時,同樣要呼叫建構函式。有幾個陣列元素就要呼叫幾次建構函式。
(1)當只需要乙個引數時,在定義物件陣列時可以直接在等號後面的花括號內提供實參;當需要多個引數時,只能對乙個建構函式的第乙個引數賦值,其餘的使用預設值。
#includeusing namespace std;
#includeclass exam
int get_x()
private:
int x;
};int main()
;//用只有乙個引數的建構函式給物件陣列賦值
//如果建構函式的引數大於1,傳入的引數對第乙個引數賦值,其餘的為預設值
for (int i = 0; i < 4; i++)
return 0;
}
(2)與基本資料型別的陣列一樣,在使用物件陣列時只能訪問單個陣列元素
一般形式為:陣列名[下標].成員名
例如:
for(int i=0;i<4;i++)
cout《執行結果:11 22 33 44
注意:當各個元素的初始值相同時,可以在類中定義不帶引數的建構函式或帶有預設引數值的建構函式;反之,需要定義帶引數(無預設值)的建構函式
#include#includeusing namespace std;
class exam
exam(int n)//帶1個引數的建構函式
int get_x()
private:
int x;
};int main()
;//呼叫4次帶1個引數的建構函式
exam ob2[4] = ;//呼叫2次帶1個引數的建構函式,2次不帶引數的建構函式
for (int i = 0; i < 4; i++)
cout << ob1[i].get_x() << ' ';
cout << endl;
for (int i = 0; i < 4; i++)
cout << ob2[i].get_x() << ' ';
system("pause");
return 0;
}
執行結果為:
11 22 33 44
55 66 123 123
編譯系統只為物件陣列元素的建構函式傳遞1個實參,所以在定義陣列時提供的實參個數不能超過陣列元素個數。
如果建構函式有多個引數,在定義物件陣列時應當怎麼實現初始化?我們只需在括號中分別寫出建構函式並指定實參即可。例如類complex的建構函式有兩個引數,分別代表實部和虛部,則可以這樣定義物件陣列:
complex com[3] = ;
1.用指標訪問單個物件成員:說明物件指標的語法和說明其他資料型別指標的語法相同。使用物件指標時,首先要把它指向乙個已建立的物件,然後才能引用該物件的成員。在一般情況下,用點運算子「.」來訪問物件成員,當用指向物件的指標來訪問物件成員時,就要用「->」操作符。
#include#includeusing namespace std;
class exe
void show_a()
private:
int x;
};int main()
//執行結果:22
2
2.用物件指標訪問物件陣列:
將上述main函式裡邊替換為:
exe ob[2];
exe *p;
ob[0].set_a(10);
ob[1].set_a(20);
p = ob;
p->show_a();
p++;
p->show_a();
//執行結果:
10 20
C 物件陣列與this指標
標籤 空格分隔 c 版本 2該文章僅被發布於作業部落 原 csdn 由於在c 中我們可以直接操作堆和棧,所以在宣告時我們也需要選擇陣列的建立方式。有一種最顯而易見的方法去判斷變數的儲存狀態,就是看物件建立時有沒有用new關鍵字。1,棧陣列棧物件 顧名思義就是陣列和物件都在當前棧中分配,帶來的好處就是...
bool指標 如何賦值 C 物件陣列與物件指標
所謂物件陣列是指每一陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,則把這一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員 定義乙個一維陣列的格式如下 類名 陣列名 下標表示式 exam ob 4 定義了類exam的物件陣列ob.與基本資料型別的陣列一樣...
C 物件陣列和物件指標
每天的生活從一杯綠茶開始,2月就這麼過去了,時間總是這麼快 1.物件陣列 在實際中,有許多的實體的屬性是共同的額,只有屬性的具體內容不一樣。這個時候我們就需要定義物件陣列,例如 student stud 50 假設已經宣告了student的類。每乙個陣列元素就是乙個student的物件。建立陣列時候...