c (物件組合)

2021-09-19 19:08:52 字數 1446 閱讀 7581

在c語言中結構體支援巢狀,同樣,c++的類也支援巢狀。也就是讓某個類的物件作為另乙個類的資料成員出現,這就是物件組合

下面的例子是讓intarray類的物件作為customer類的共有資料成員存在。

在這裡,intarray類其實就充當了我們自己定義的乙個抽象資料型別通過各種運算子過載函式,實現對字串很方便的操作與管理。

intarray類:

class intarray

intarray(const char *);

intarray(const intarray &);

~intarray();

//返回物件元素個數

int size()

//過載運算子

char &operator(const int &);

//過載賦值運算子

char *operator=(const char *);

//過載流插入符

friend ostream &operator<

};

customer類:

class customer

};

使用物件組合的時候,尤其要注意內部類的運算子過載函式是否充分

在除錯這個程式的時候,一開始我沒有過載流插入運算子<

//過載流插入運算子

ostream &operator<

//拷貝建構函式

intarray::intarray(const intarray &obj)

//記憶體分配出錯,顯示錯誤資訊並終止程式。

void intarray::memerror()

//陣列下標越界

void intarray::suberror()

/*** 過載運算子

** 引數:陣列下標

** 返回值:陣列元素的引用

*/char &intarray::operator(const int &n)

//過載=運算子

char *intarray::operator=(const char *right)

//過載流插入運算子

ostream &operator<

{ strm<主函式測試:

customer andrew("andrew","china","taiyuan","shanxi");

//這裡相當於直接輸出了intarray類的物件,因此需要定義該類的流插入運算子過載函式

cout執行結果:

物件 組合 方法

uml中物件有關聯,聚合,引用等抽象意義上的含義,但實現的形式用c 來說基本如下 偽 class 類1 類1函式操作 class 類2 public 類2 類1 c 這個也可以用類2 類1 c c c 代替 類2函式操作 private 繼承類的時候protected 類1 c 紅色是關鍵,定義了乙...

物件導向 組合

物件導向之組合 1 什麼是繼承?什麼是組合?顧名思義 繼承就是什麼是什麼的關係 組合就是什麼有什麼的關係 class person nationnality china def init self,name,age,self.name name self.age age self.class tea...

OOP 物件組合

物件組合 把已有物件組合起來 成員物件 一類的成員變數是另乙個類的物件 封閉類 包含成員物件的類 include include using namespace std class ctyre class cengine class ccar intmain 當封閉類物件生成時 首先,執行所有成員物...