网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 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
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/20 0:29:50