• 2.8 引入本地扩展


    【1】源代码

    1 // 源代码(为QDate类添加一个函数nextDay)
    2 QDate nextDay(QDate date)
    3 {
    4     return QDate(date.year(), date.month(), date.day() + 1);
    5 }

    【2】引入本地扩展(子类 或 包装类)

     1 // 子类
     2 class MyDateSub : public QDate
     3 {
     4 public:
     5     MyDateSub(QDate date) : QDate(date.year(), date.month(), date.day())
     6     {}
     7 
     8     QDate nextDay()
     9     {
    10         return QDate(year(), month(), day() + 1);
    11     }
    12 };
    13 
    14 // 包装类
    15 class MyDateWrap
    16 {
    17 public:
    18     MyDateWrap(QDate arg) : m_original(arg)
    19     {}
    20 
    21     // 为源对象添加委托函数
    22     int getYear() const
    23     {
    24         return m_original.year();
    25     }
    26     int getMonth() const
    27     {
    28         return m_original.month();
    29     }
    30     int getDay() const
    31     {
    32         return m_original.day();
    33     }
    34 
    35     QDate nextDay()
    36     {
    37         return QDate(getYear(), getMonth(), getDay() + 1);
    38     }
    39 
    40 private:
    41     QDate m_original; // 源对象
    42 };

    【3】总结

    你需要为服务类提供一些额外函数,但你无法修改这个类。

    建立一个新类,使它包含这些额外函数。让这个扩展品成为源类的子类或包装类。

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    vue 移动端ui框架
    vue ESLint自动修复
    vue 隐藏滚动条
    生动形象地理解async await
    vue中的slot与slot-scope
    爬虫利器 puppeteer
    vue实例的生命周期
    vue 监听滚动事件,实现动态锚点
    转:视觉中国的NoSQL之路:从MySQL到MongoDB
    转:你需要知道的NoSQL数据库10件事
  • 原文地址:https://www.cnblogs.com/Braveliu/p/7345095.html
Copyright © 2020-2023  润新知