C++的三大特性的理解

三大特性:封装,继承,多态

封装

        将数据和方法封装在一起,并加以权限区分,通过公共方法来访问私有数据。

封装性的体现

类的访问控制

        使用修饰符(public、private、protected)来控制成员变量和成员函数的访问权限。private隐藏类的内部实现细节,只允许类的成员函数进行访问和修改;public部分则定义了类对外提供的接口,可以被外部代码访问。

构造函数和析构函数:

        通过构造函数和析构函数,隐藏对象的创建和销毁过程,使外部代码无需关心对象的具体管理方式.

继承

        继承允许子类从父类中继承成员变量和成员函数。通过继承,子类可以获取父类的成员变量和成员函数,并且可以对其进行扩展或修改。

继承方式

        继承分为三种:公共继承(public),保护继承(private),私有继承(protected

公共继承派生类的权限

        父类的公有成员在子类中保持为公有成员,父类的保护成员在子类中为保护成员,父类的私有成员在子类中无法直接访问。继承过程中权限保持不变

       子类的对象可以直接访问父类的公有成员和受保护成员,但不能直接访问父类的私有成员

保护继承派生类的权限

        类的公有和保护成员在派生类中变为保护成员,父类的私有成员在子类中无法直接访问。

私有继承派生类的权限

        父类的公有和保护成员在派生类中变为私有成员,父类的私有成员在子类中无法直接访问。

不能被继承的成员函数

        构造函数、析构函数、operator=运算符

继承性的体现

层次结构和组织:

        继承可以用于创建类的层次结构,通过将共性的属性和行为定义在基类中,派生类可以继承这些共性,并添加或修改自己特有的属性和行为。

代码重用:

        继承允许派生类使用基类已有的属性和方法,避免了重复编写相同的代码。通过继承,派生类可以直接访问并使用基类的成员,减少了代码量和工作量。

继承带来的同名问题(解决该问题的最好办法是使用作用域)

        子类和父类的成员变量同名,子类将默认使用自己的成员变量。

        子类重定义父类的同名函数,子类将默认使用自己的成员函数。

多继承

        class 子类:继承方式1 父类1,继承方式2  父类2

        {     

        };

菱形继承

        有公共祖先的多继承叫菱形继承。

虚继承

        继承方式被virtual关键字修饰的,为虚继承。

多态

        多态:指同一类事物以多种形式存在。多态被分为静态多态和动态多态

静态多态

        静态多态:在编译阶段根据参数的类型和数量来决定调用哪个函数。

        通过函数重载来实现,在同一个类中,可以有多个同名函数,但函数的参数列表不同。

动态多态

        动态多态:在运行时根据对象的实际类型来调用相应的函数。

        通过虚函数和继承来实现,子类重写父类的虚函数,当通过父类指针或者引用调用虚函数时,调用的是子类的重写函数。

 多态性的体现

虚函数和动态绑定:

        通过在父类中声明虚函数,并在子类中重写这些虚函数,实现运行时多态。当通过指向父类的指针或引用调用虚函数时,实际调用的是对应子类中的重写函数。

        注:这种情况下,指向父类的指针,即可以访问父类中定义的成员,也可以调用子类中重写的虚函数。

纯虚函数和抽象类:

        通过将父类中的虚函数声明为纯虚函数,使得父类成为抽象类,无法被实例化。子类必须重写这些纯虚函数才能被实例化。纯虚函数为接口提供了一种规范,子类必须实现这些函数,以保证多态性的正确性。

虚析构函数:

        当父类的析构函数声明为虚函数时,可以确保通过父类指针删除子类对象时,会首先调用正确的子类析构函数,避免了内存泄漏。先析构子类,在析构父类

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值