当前位置: 首页 > news >正文

海南建站中心嘉兴网站建设制作

海南建站中心,嘉兴网站建设制作,无锡网页设计培训班,网站响应是什么问题吗组合介绍以及与继承对比 什么是组合 (1)composition#xff0c;组合#xff0c;就是在一个class内使用其他多个class的对象作为成员 (2)用class tree做案例讲解 (3)组合也是一种代码复用方法#xff0c;本质也是结构体包含 #include iostream #include vector…组合介绍以及与继承对比 什么是组合 (1)composition组合就是在一个class内使用其他多个class的对象作为成员 (2)用class tree做案例讲解 (3)组合也是一种代码复用方法本质也是结构体包含 #include iostream #include vector #include string// Leaf 类 class Leaf { public:Leaf(const std::string color) : color_(color) {std::cout Leaf constructor called: color_ std::endl;}~Leaf() {std::cout Leaf destructor called: color_ std::endl;}void display() const {std::cout Leaf color: color_ std::endl;}private:std::string color_; };// Branch 类 class Branch { public:Branch(int length) : length_(length) {std::cout Branch constructor called: length_ cm std::endl;}~Branch() {std::cout Branch destructor called: length_ cm std::endl;}void display() const {std::cout Branch length: length_ cm std::endl;}private:int length_; };// Tree 类包含 Leaf 和 Branch 对象 class Tree { public:Tree(const std::string leafColor, int branchLength) : leaf_(leafColor), branch_(branchLength) {std::cout Tree constructor called std::endl;}~Tree() {std::cout Tree destructor called std::endl;}void display() const {leaf_.display();branch_.display();}private:Leaf leaf_;Branch branch_; };int main() {Tree tree(Green, 150);tree.display();return 0; } 继承与组合的特点对比 (1)继承是a kind ofis a关系具有传递性,不具有对称性。 (2)组合是a part ofhas a的关系 (3)继承是白盒复用。因为类继承允许我们根据自己的实现来覆盖重写父类的实现细节父类的实现对于子类是可见的。 (4)继承的白盒复用特点一定程度上破坏了类的封装特性因为这会将父类的实现细节暴露给子类 (5)组合属于黑盒复用。被包含对象的内部细节对外是不可见的所以它的封装性相对较好实现上相互依赖比较小 (6)组合中被包含类会随着包含类创建而创建消亡而消亡。组合属于黑盒复用并且可以通过获取其它具有相同类型的对象引用或指针在运行期间动态的定义组合。而缺点就是致使系统中的对象过多。 (7)OO设计原则是优先组合而后继承 多继承及其二义性问题 多继承 (1)多继承就是一个子类有多个父类 (2)多继承演示 (3)多继承和单继承的原理效果并无明显区别 (4)多继承会导致二义性问题 多继承的二义性问题1 (1)场景C多继承自A和B则C中调用A和B的同名成员时会有二义性 (2)原因C从A和B各自继承了一个同名不同namespace域成员所以用C的对象来调用时编译器无法确定我们想调用的是哪一个 (3)解决办法1避免出现让A和B的public成员命名不要重复冲突。但这个有时不可控。 (4)解决办法2编码时明确指定要调用哪一个用c.A::func()明确指定调用的是class A的func而不是class B的 (5)解决办法3在C中重定义func则调用时会调用C中的funcA和B中的都被隐藏了 (6)总结能解决但是都没有很好的解决。 多继承的二义性问题2 (1)场景菱形继承问题。即A为祖类B1:A, B2:A, C:B1,B2此时用C的对象调用A中的某个方法时会有二义性 (2)分析c.func()有二义性c.A::func()也有二义性但是c.B1::func()和c.B2::func()却没有二义性 (3)解决办法和问题1中的一样但是问题2更隐蔽也更难以避免 // 祖类 class Aa {public:void show() { std::cout As method std::endl; } };// 派生类 B1 和 B2从 A 继承 class B1 : public Aa {public:void show() { std::cout B1s show std::endl; }void showB1() { std::cout B1s method std::endl; } };class B2 : public Aa {public:void show() { std::cout B2s show std::endl; }void showB2() { std::cout B2s method std::endl; } };// 派生类 C从 B1 和 B2 继承 class C : public B1, public B2 {public:void showC() { std::cout Cs method std::endl; } };int test070103() {C c;// c.Aa::show(); // 调用 A 的方法 不可以c.Aa::B1::show(); // 调用 A 的方法 不可以c.B2::Aa::show(); // 调用 A 的方法 不可以c.B1::show(); // 调用 B1 的方法c.B2::show(); // 调用 B2 的方法c.showB1(); // 调用 B1 的方法c.showB2(); // 调用 B2 的方法c.showC(); // 调用 C 的方法return 0; }虚继承解决菱形继承的二义性问题 虚继承怎么用 (1)场景菱形继承导致二义性问题本质上是在孙子类C中有B1和B2中包含的2份A对象所以有了二义性。 (2)虚继承解决方案让B1和B2虚继承AC再正常多继承B1和B2即可 (3)虚继承就这么简单就是为了解决菱形继承的二义性问题而生和虚函数为了实现多态特性并没有直接关系 虚继承的实现原理 (1)虚继承的原理是虚基类表指针vbptr和虚基类表virtual table (2)参考https://blog.csdn.net/xiejingfa/article/details/48028491 总结 理解什么是组合一个class类里面有很多其他class类类型的成员变量 理解组合和继承的区别 二义性执行了一个函数确不一定是自己想指定的那个 解决方案用c.A::func()明确的指定调用的是class 虚继承有点像条件编译引入一次就好不用重复引入也能达到引入效果 学习记录侵权联系删除。 来源朱老师物联网大课堂
http://www.zqtcl.cn/news/363392/

相关文章:

  • 在线营销型网站wordpress 怎么添加即时联系窗口
  • 网站加图标网站开发属于无形资产
  • 个人网站开发与设计摘要企业营销策划心得体会
  • 专注苏州网站优化自建网站的优缺点
  • 网络建站怎么做js与asp.net做的网站
  • 个人网站设计理念自己做简历网站
  • 做网页设计的网站网站流量多少做网盟
  • 上海协会网站建设网站制作培训费用
  • 学会网站建设总结淮北市建市
  • 泉州开发网站的公司有哪些域名不用了需要注销吗
  • 重庆网站推广平台东莞整站优化火速公司
  • 商务网站建设综合实训网站推广效果怎么样
  • 成都品牌网站建设电话项目外包平台接活
  • 教育培训类网站模板上海有几个区最好
  • 公司网站维护怎么维护东莞网站建设it s
  • pc网站怎么做男科医院治疗一次2000元
  • 电子网站建设心得企业查询app排行榜
  • 杭州做网站的科技公司永川做网站的公司
  • 动物自己做的网站网站优化外包公司
  • 企业网站建设的三种方式并举例手机wap网站是什么
  • 做深圳门户网站起什么名字好建设网站对公司起什么作用是什么
  • 长春企业网站设计建设公司资质查询官网
  • 医疗网站前置审批查询免费网站建设可信赖
  • 摄影师个人网站模板宝坻集团网站建设
  • 比较多人用什么网站做推广wordpress数据库表管理系统
  • 网页开发和游戏开发东莞优化怎么做seo
  • 北京网站搭建开发高级网页设计教程
  • 北京南站是中高风险地区吗网站建设上机实验心得
  • 大学生做兼职的网站有哪些免费行情软件网站有哪些
  • 静安手机网站建设常见的网络营销方法及其效果