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.
顺序 选择 循环 总结