C++的三大特性

C++的三大特性:继承、多态、封装

1、继承

 被继承的是父类(基类),继承出来的类是子类(派生类),子类拥有父类的所有的特性。
 继承方式有公有继承、私有继承,保护继承。默认是私有继承

  • 公有继承中父类的公有和保护成员在子类中不变,私有的在子类中不可访问。
  • 私有继承中父类的公有和保护成员在子类中变为私有,但私有的在子类中不可访问。
  • 保护继承中父类的公有和保护成员在子类中变为保护,但私有的在子类中不可访问。
     c++语言允许单继承和多继承,

    优点:继承减少了重复的代码、继承是多态的前提、继承增加了类的耦合性;
    缺点:继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现;父类通常至少定义了子类的部分行为,父类的改变都可能影响子类的行为;如果继承下来的子类不适合解决新问题,父类必须重写或替换,那么这种依赖关系就限制了灵活性,最终限制了复用性。

虚继承:为了解决多重继承中的二义性问题,它维护了一张虚基类表。

2、多态

 多态性是指对不同类的对象发出相同的消息将会有不同的实现
 C++有两种多态,称为动多态(运行期多态)和静多态(编译器多态),静多态主要是通过模板来实现,而动多态是通过虚函数来实现的。即在基类中存在虚函数(一般为纯虚函数)子类通过重载这些接口,使用基类的指针或者引用指向子类的对象,就可以调用子类对应的函数,动多态的函数调用机制是执行器期才能确定的,所以他是动态的。

优点:大大提高了代码的可复用性;提高了了代码的可维护性,可扩充性;
缺点:易读性比较不好,调试比较困难; 模板只能定义在头文件中,当工程大了之后,编译时间十分的变态;

3、封装

 隐藏类的属性和实现细节,仅仅对外提供接口,
 封装性实际上是由编译器去识别关键字public、private和protected来实现的,体现在类的成员可以有公有成员(public),私有成员(private),保护成员(protected)。私有成员是在封装体内被隐藏的部分,只有类体内说明的函数(类的成员函数)才可以访问私有成员,而在类体外的函数时不能访问的,公有成员是封装体与外界的一个接口,类体外的函数可以访问公有成员,保护成员是只有该类的成员函数和该类的派生类才可以访问的。

 优点:隔离变化;便于使用;提高重用性;提高安全性
 缺点:如果封装太多,影响效率;使用者不能知道代码具体实现。

重载和覆盖

定义:
重载:写一个与已有函数同名但是参数表不同的函数。
覆盖:虚函数总是在派生类中被改写,即函数名和参数都一样,只是函数的实现体不一样。。
类的关系区别:
覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系
  在这里插入图片描述

  • 20
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值