-
说明
-
案例
-
书接上回
- 鞋贩子规模大了,想要简便的方式查看员工情况。
-
代码
#include <vector> #include <iostream> #include <string> class TuanDui { public: virtual void addChengYuan(TuanDui* chengyuan) = 0; virtual void ChaKan() = 0; }; class BuMen : public TuanDui{ public: BuMen(std::string leader):lead_(leader){} void addChengYuan(TuanDui* chengyuan) { chengyuan_.emplace_back(chengyuan); } void ChaKan() { std::cout << "----------------" << lead_ << "-----------------" << std::endl; for(auto i:chengyuan_) { i->ChaKan(); } } private: std::string lead_; std::vector<TuanDui*> chengyuan_; }; class PuTongYuanGong : public TuanDui{ public: PuTongYuanGong(std::string name):name_(name){} void addChengYuan(TuanDui* chengyuan) { std::abort(); } void ChaKan() { std::cout << name_<< std::endl; } private: std::string name_; }; int main() { TuanDui* dong_shi_zhang = new BuMen("xie fan zi"); { TuanDui* chu_na_bu = new BuMen("zhangsan"); TuanDui* zhi_gong_1 = new PuTongYuanGong("xiaoli"); TuanDui* zhi_gong_2 = new PuTongYuanGong("xiaoliu"); TuanDui* zhi_gong_3 = new PuTongYuanGong("xiaowu"); TuanDui* zhi_gong_4 = new PuTongYuanGong("xiaoqi"); chu_na_bu->addChengYuan(zhi_gong_1); chu_na_bu->addChengYuan(zhi_gong_2); chu_na_bu->addChengYuan(zhi_gong_3); chu_na_bu->addChengYuan(zhi_gong_4); dong_shi_zhang->addChengYuan(chu_na_bu); } { TuanDui* dao_gou_bu = new BuMen("zhangsi"); TuanDui* zhi_gong_1 = new PuTongYuanGong("sixiaoli"); TuanDui* zhi_gong_2 = new PuTongYuanGong("sixiaoliu"); TuanDui* zhi_gong_3 = new PuTongYuanGong("sixiaowu"); TuanDui* zhi_gong_4 = new PuTongYuanGong("sixiaoqi"); dao_gou_bu->addChengYuan(zhi_gong_1); dao_gou_bu->addChengYuan(zhi_gong_2); dao_gou_bu->addChengYuan(zhi_gong_3); dao_gou_bu->addChengYuan(zhi_gong_4); dong_shi_zhang->addChengYuan(dao_gou_bu); } dong_shi_zhang->ChaKan(); } -
说明
- 鞋贩子领导下的收纳和导购两个部门情况。
- 鞋贩子直属下属,直属下属若干员工。
-
-
总结
C++ 10 组合模式
最新推荐文章于 2025-12-09 11:28:31 发布
1835

被折叠的 条评论
为什么被折叠?



