C++ 用结构体实现多态

it2022-05-05  112

#define _CRT_SECURE_NO_WARNIGS #include <iostream> using namespace std; //------------抽象层----------- //定义一个锦囊类型 typedef void(TIPS)(void); //定义锦囊 struct tip { char from[64];//谁写的 char to[64];//写给谁 //锦囊内容 TIPS *tp;//相当于抽象类的纯虚函数 }; //需要一个打开锦囊的架构函数 void open_tips(struct tip *tip_p) { cout << "打开了锦囊" << endl; cout << "此锦囊是由" << tip_p->from << "写给" << tip_p->to << "的。" << endl; cout << "内容是" << endl; tip_p->tp(); } //提供一个创建锦囊的方法 struct tip* create_tip(char*from, char*to, TIPS*tp) { struct tip*temp = (struct tip*)malloc(sizeof(struct tip)); if (temp==NULL) { return NULL; } strcpy_s(temp->from, from); strcpy_s(temp->to, to); temp->tp = tp; return temp; } //提供一个销毁锦囊的方法 void deletetp(struct tip*te) { if (te!=NULL) { free(te); te = NULL; } } //------------实现层----------- //诸葛亮写了3个锦囊 void tip1(void) { cout << "一到东吴就拜会乔国老。" << endl; } void tip2(void) { cout << "刘备乐不思蜀,就对他谎称曹操大军压境" << endl; } void tip3(void) { cout << "被东吴军队追赶就求孙尚香解围。" << endl; } int main(void) { //创建锦囊 struct tip* temp1= create_tip("孔明", "赵云", tip1); struct tip* temp2 = create_tip("孔明", "赵云", tip2); struct tip* temp3 = create_tip("孔明", "赵云", tip3); //打开锦囊 cout << "刚刚来到东吴,赵云打开了第一个锦囊" << endl; open_tips(temp1); cout << "-----------------" << endl; cout << "刘备乐不思蜀,赵云打开了第二个锦囊" << endl; open_tips(temp2); cout << "-----------------" << endl; cout << "孙权大军追杀,赵云打开了第三个锦囊" << endl; open_tips(temp3); cout << "-----------------" << endl; //销毁锦囊 deletetp(temp1); deletetp(temp2); deletetp(temp3); return 0; }

程序运行结果如下:


最新回复(0)