标题 | C++可扩展的编程模式 |
范文 | 注意:设计原则----尽量不要去修改基类内容,有新的东西要从派生类中去实现。层层派生。派生模式使得可扩展、 #ifndef WIN_32_TEST_H #define WIN_32_TEST_H #include <iostream> #include <ctime> #include <string> using std::endl; using std::cout; using std::string; //钟表的几种颜色 enum Color { red, blue, white, black }; //钟表的形状 enum Shape { square, //方形 circle //圆形 }; //抽象钟表基类。将钟表类通用方法,例如显示时间抽象出来,放在基类中。 class Clock { public: inline string GetTime() //显示时间的方法通用,所以抽出来作为基类中方法 { time(&now); NT = localtime(&now); int nHour = NT->tm_hour; int nMinute = NT->tm_min; int nSecond = NT->tm_sec; char *pTemp = new char[24]; memset(pTemp, 0, 24); itoa(nHour, pTemp, 10); string sHour = pTemp; //转换Hour memset(pTemp, 0, 24); itoa(nMinute, pTemp, 10); string sMinute = pTemp; //转换分钟 memset(pTemp, 0, 24); itoa(nSecond, pTemp, 10); string sSecond = pTemp; //转换秒数 string sTime = sHour + ":" + sMinute + ":" + sSecond; if (pTemp) { delete [] pTemp; pTemp = NULL; } return sTime; } //返回表的外观颜色 virtual int GetColor() = 0; //纯虚函数,抽象类不能实例化对象 private: time_t now; struct tm *NT; }; //派生类---挂钟 class WallClock : public Clock { public: int GetColor() //重写派生类的虚方法 { return red; } //挂钟的形状,派生类自己的方法 int GetShape() { return square; } }; //派生类---闹钟 class AlarmClock : public Clock { public: int GetColor() { return black; } //闹钟形状----闹钟类自己的方法 int GetShape() { return circle; } }; //后续闹钟有功能增加了,需要从AlarmClock类派生,而不是从Clock派生 class AlramClockExtend : public AlarmClock { public: void Alarm() //添加了闹铃功能 { cout<<"Alarm"<<endl; } }; #endif |
随便看 |
|
在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。