利用C++多态实现 “小鸡哔哔”的歌词
2014-11-18 16:55
399 查看
#include<iostream> using namespace std; int flag=0; char a[]="小鸡哔哔~bi~哟"; char b[]="小鸡哔哔哔哔~bi~哟"; void fa1() {cout<<a<<endl;} void fa2() {cout<<b<<endl;} void fa() {cout<<a<<endl<<b<<endl;} void fb() {cout<<b<<endl<<a<<endl;} void fc() {cout<<b<<endl<<a<<endl<<b<<endl;} void fd() {cout<<b<<endl<<a<<endl<<b<<endl;} class xiao_ji { public: virtual void f1() { cout<<"你看那里有个小鸡哟"<<endl<<"你看那里它有小鸡哟"<<endl; } virtual void f2()const { if(flag==0) {fa();fa();fa();} else if(flag==1) {fb();fb();fa2();} else if(flag==2) {fa();fa();} else if(flag==3) {fb();fa2();} else if(flag==4) {fa();fa();} else if(flag==5) {fb();fa2();} else if(flag==6) {fa();fa();} else if(flag==7) {fb();fa2();} else if(flag==8) {fa();fa();} else if(flag==9) {fb();fb();fa2();} else if(flag==10) {fb();fa2();fa2();} flag++; } virtual void f3()const{} }; class mu_ji:public xiao_ji { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有母鸡哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"母鸡咯咯咯咯咯~go~"<<endl; } }; class gong_ji:public mu_ji { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有公鸡哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"公鸡喔喔喔喔喔~wo~"<<endl; this->mu_ji::f3(); } }; class huo_ji:public gong_ji { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有火鸡哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"火鸡嘟嘟嘟嘟嘟~du~"<<endl; this->gong_ji::f3(); } }; class ge_zi:public huo_ji { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有鸽子哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"鸽子图噜噜噜噜~lu~"<<endl; this->huo_ji::f3(); } }; class mao_mi:public ge_zi { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有猫咪哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"猫咪喵喵喵喵喵~miao~"<<endl; this->ge_zi::f3(); } }; class xiao_gou:public mao_mi { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有小狗哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"小狗旺旺旺旺旺~wang~"<<endl; this->mao_mi::f3(); } }; class shan_yang:public xiao_gou { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有山羊哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"山羊咩~mie~"<<endl; this->xiao_gou::f3(); } }; class mian_yang:public shan_yang { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有绵羊哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"绵羊咇~bie~"<<endl; this->shan_yang::f3(); } }; class mu_niu:public mian_yang { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有母牛哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"母牛萌~meng~"<<endl; this->mian_yang::f3(); } }; class gong_niu:public mu_niu { public: virtual void f1() { for(int i=0;i<2;i++) cout<<"你看那里又有公牛哟"<<endl; } virtual void f2()const { this->xiao_ji::f2(); } virtual void f3()const { cout<<"公牛呣~mu~"<<endl; this->mu_niu::f3(); } }; class tuo_laji:public xiao_ji { public: virtual void f1(){} void f2()const { for(int i=0;i<2;++i) cout<<"你看那里有拖拉机哟"<<endl; for(int i=0;i<3;++i) cout<<"拖拉机嗡~weng~"<<endl; cout<<"小鸡被撞 喔 啊喔~"<<endl; } }; int main() { xiao_ji* p[12]; p[0]=new xiao_ji; p[1]=new mu_ji; p[2]=new gong_ji; p[3]=new huo_ji; p[4]=new ge_zi; p[5]=new mao_mi; p[6]=new xiao_gou; p[7]=new shan_yang; p[8]=new mian_yang; p[9]=new mu_niu; p[10]=new gong_niu; p[11]=new tuo_laji; for(int i=0;i<12;++i) { p[i]->f1(); p[i]->f3(); p[i]->f2(); cout<<endl; } delete []p; return 0; }
由于歌词过长,直接截取了最后一部分
相关文章推荐
- C++中利用虚函数实现多态
- C++模板--ATL利用其实现多态
- [C++] 测试硬件popcnt(位1计数)指令与各种软件算法,利用模板实现静态多态优化性能
- cocos2d-x 植物大战僵尸(3)随机太阳因子及利用C++多态实现金币递增
- C++对象布局及多态实现探索之虚继承
- C++多态技术的实现和反思
- C++对象及多态实现探索之内存布局
- 用C实现C++的多态---剖析GTK的"对象" (一)
- 在C++中利用模板实现 data variant(propery)
- 从易到难编写C++程序,(6)问题:利用问题(5)的随机数生成实现发牌
- C++对象布局及多态实现之动态和强制转换
- C++中实现多态的方法
- C++对象布局及多态实现之带虚函数的类
- 利用纯C++实现COM
- 利用Ajax底层实现歌词无刷搜索
- C++对象布局及多态实现探索之虚函数调用
- C++对象布局及多态实现探索之内存布局
- 巧妙的利用C++的特性实现Profiling
- 用C实现C++的多态---剖析GTK的"对象" (三)
- 在c++中利用指针实现动态数组