1 #include2 #include3 #include4using
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...