一.物件陣列
物件陣列是指每乙個陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,可以把這一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員。定義乙個一維陣列的格式如下:
類名 陣列名【下標表示式】
在建立陣列時,同樣要呼叫建構函式。有幾個陣列元素就要呼叫幾次建構函式。
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.物件陣列的定義和使用說明 在建立物件陣列的時候需要呼叫建構函式,有多少個物件就要呼叫多少次建構函式 如果物件陣列所屬類有帶引數的建構函式,可用初始化列表按順序呼叫建構函式,使用複製初始化來初始化來初始化每個陣列元素 如果物件陣列所屬類有單個引數時,定義陣列時可以直接在初始化列表...