作業 純虛函式的應用 繼承 單向鍊錶

2022-02-27 15:05:33 字數 3211 閱讀 8542

1 #include2 #include3 #include

4using

namespace

std;56

class object

10virtual

int isequal(object &) = 0; //

實現兩個結點資料的比較

11virtual

float data() = 0; //

得到實際結點資料類的資料

12virtual

void show() = 0; //

輸出乙個結點上的資料

13virtual ~object() {} //

虛析函式

14};

1516

class node

23 node(node &node)

26void fillinfo(object *obj)

29 friend class list; //

宣告友元類

30};

3132

//定義單向鍊錶類

33class

list

39 ~list()

42void addnode(node *node); //

插入鍊錶

43 node* insert(node *node); //

公升序鍊錶

44 node* lookup(object &obj); //

查詢鍊錶

45 node* deletenode(node *node); //

刪除指定鍊錶

46void showlist(); //

輸出整條鍊錶

47void deletelist(); //

刪除整條鍊錶

48};

4950

void list::addnode(node *node) //

有序新增結點--呼叫insert函式

51

56else

5760

} 61

62 node* list::insert (node *node)

6369 node *p1, *p2;

70 p2 = p1 =head;

71while (p2->next && p2->info->data() < node->info->data())

7275

if (node->info->data() > p2->info->data())

7679

else

8083

return

head;84}

8586 node* list::deletenode(node *node)

8798

if (p2 ==node)

99 p1->next = p2->next;

100}

101return

node;

102}

103104 node* list::lookup(object &obj)

105112

return

nullptr;

113}

114115

void

list::showlist()

116122

}123

124void

list::deletelist()

125134

}135

//員工類

136class staff : public object

147void setdata(char *name = "",string address = "",float salary = 0.0f

) 153

virtual

float

data()

156int isequal(object &obj)

157161

void

show()

162165 ~staff()

168};

169170

int main(void

)171

192 list.showlist(); //

顯示當前鍊錶資料

193 cout <194//

pn = list.lookup(*p);

195 staff da; //

宣告派生類型別物件

196 cout << "

輸入新增成員的薪水(新成員已經確定): ";

197 cin >>salary;

198 da.setdata("

sandy

","美國

",salary); //

修改派生類物件的資料

199 pn = new

node;

200 pn->fillinfo(&da); //

將結點資料指標指向派生的資料---檢測fillinfo是否會指向staff類普通物件

201 list.addnode(pn); //

將新結點(公升序)新增到鍊錶中

202list.showlist();

203 cout <204205

if (pn) pn = list.lookup(da);//

在鍊錶中尋找指定資料(派生類物件),找到返回該結點,否則返回null

206if

(pn)

207 pt = list.deletenode(pn);//

刪除指定的鍊錶---返回值為該結點

208list.showlist();

209 cout <210list.deletelist();

211return0;

212213 }

純虛函式的應用

純虛函式的定義 在c 中,只有虛函式才能被宣告為純虛函式,語法格式為 virtual 返回值型別 函式名 函式引數 0 其中,純虛函式沒有函式體,只有函式宣告,也就是在類中的虛成員函式後面加上 0,來表示這是乙個純虛函式。2.純虛函式的應用 包含純虛函式的類稱為抽象類,所謂的抽象類也就是所無法被例項...

多重繼承中的純虛函式「妙用」

在多重繼承中,處於中間層的類可能有一些用,但又不會例項化。在最終實現類中需要呼叫中間類的方法,同時必須保證在最終類中也實現該方法。如何做到?說的不清晰,舉oceanbase的例子吧 obphyoperator是乙個純虛基類,它要求每乙個子類都實現reset 方法 class obphyoperato...

C 關於類的繼承,虛函式,純虛函式,幾個修飾詞

vc關於類的繼承,虛函式,純虛函式,幾個修飾詞 一 基類與派生類 ifndef baseclass h define baseclass h class baseclass endif baseclass h include baseclass.h baseclass baseclass basec...