首页 > 编程语言 > 81.知道C++中的组合吗?它与继承相比有什么优缺点吗?

81.知道C++中的组合吗?它与继承相比有什么优缺点吗?

时间:2023-07-11 15:23:09浏览次数:40  
标签:81 包含 组合 对象 子类 优缺点 C++ 继承 父类

81.知道C++中的组合吗?它与继承相比有什么优缺点吗?

1.继承

继承是Is a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地实现对父类的扩展。

继承的缺点有以下几点:

①父类的内部细节对子类是可见的。

②子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。

③如果对父类的方法做了修改的话(比如增加了一个参数),则子类的方法必须做出相应的修改。所以说子类与父类是一种高耦合,违背了面向对象思想。

2.组合

组合也就是设计类的时候把要组合的类的对象加入到该类中作为自己的成员变量。

组合的优点:

①当前对象只能通过所包含的那个对象去调用其方法,所以所包含的对象的内部细节对当前对象时不可见的。

②当前对象与包含的对象是一个低耦合关系,如果修改包含对象的类中代码不需要修改当前对象类的代码。

③当前对象可以在运行时动态地绑定所包含的对象。可以通过set方法给所包含对象赋值。

组合的缺点:①:容易产生过多的对象。②:为了能组合多个对象,必须仔细对接口进行定义。

参考资料来源:

阿秀

标签:81,包含,组合,对象,子类,优缺点,C++,继承,父类
From: https://www.cnblogs.com/codemagiciant/p/17544775.html

相关文章

  • PAT-甲级-1004 Counting Leaves C++
    Afamilyhierarchyisusuallypresentedbyapedigreetree.Yourjobistocountthosefamilymemberswhohavenochild.InputSpecification:Eachinputfilecontainsonetestcase.Eachcasestartswithalinecontaining 0<N<100,thenumberofnode......
  • 181-超过经理收入的员工
    超过经理收入的员工原文地址:181.超过经理收入的员工-力扣(LeetCode)题目如下所示个人题解这题也很简单,如下SQL所示--建表CREATETABLEemployee( idINTPRIMARYKEY, nameVARCHAR(10), salaryINT, managerIdINT);--编写一个SQL查询来查找收入比经理高......
  • Visual Studio C++ 相关使用技巧(持续更新)
    0.目的Startedin2023-07-1113:45:55记录VisualStudioC++的一些问题、配置步骤,用于提升效率。主要用VS2022版本,偶尔用VS2019。1.关闭inlayhints函数的参数前面,显示了类型。有时候感觉很碍眼。在VSCode里这称为inlayhints。在VS2022中文版本中,称为“启......
  • 动态数组和C++ std::vector详解
    目录1.std::vector2.vector的用法    2.1vector的定义和声明    2.2成员函数        2.2.1基本函数            operator=            assign            get_allocator        2.2.2元素访问   ......
  • C++进制转换+扫描线算法(二维区间合并面积和)
    ......
  • DevTools 无法加载源映射: 无法加载httplocalhost8081staticscssbootstrap.min.css.map
    DevTools无法加载源映射:无法加载http://localhost:8081/statics/css/bootstrap.min.css.map的内容:HTTP错误:状态代码404,net::ERR_HTTP_RESPONSE_CODE_FAILURE 解决办法:找到bootstrap.min.css,删除最后一行注释 注意:如果是css报错就删除:/*#sourceMappingURL=bootst......
  • C++面试八股文:用过std::set/std::map吗?
    C++面试八股文:用过std::set/std::map吗?某日二师兄参加XXX科技公司的C++工程师开发岗位第27面:面试官:用过std::set/std::map吗?二师兄:用过。面试官:能介绍一下二者吗?二师兄:std::set是一个有序的集合,其中的元素是唯一的,即每个元素只能出现一次。一般用于去重和自动排序。......
  • 编程语言比拼之Java VS C++
    学Java还是C++?Java和C++都是非常受欢迎的编程语言,各有各的优势和适用场景。以下是对它们的简要比较:性能:C++通常被认为是一种更高效的编程语言,适用于对性能要求较高的应用程序,如游戏开发、嵌入式系统和高频交易等。C++具有更接近底层的控制能力,允许开发人员直接管理内存和硬件资源,以......
  • C++中set的用法学习
    Set是C++ STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。Set是C++STL(标准模板库)的一个容器类,它用于存储不同的值,并且可以按照特定顺序进行访问和操作。Set是一种基于红黑树实现的关联容器,也就是说它的元素按照固定的顺序排列,且每个元素都唯一......
  • 1003 Emergency C++
    Asanemergencyrescueteamleaderofacity,youaregivenaspecialmapofyourcountry.Themapshowsseveralscatteredcitiesconnectedbysomeroads.Amountofrescueteamsineachcityandthelengthofeachroadbetweenanypairofcitiesaremarke......