C++三大特性

前言

c++分为三大特性:封装、继承、多态

封装目的是实现代码模块化。
继承目的是实现代码扩展。
多态目的是分为静态多态和动态多态。静态多态:函数重载和泛型编程。动态多态:虚函数重写。

一、封装

  封装就是将数据和行为有机结合起来,形成一个整体。把数据和处理数据的操作结合形成类,数据和函数都是类的成员。

封装的类有如下的访问类型:

1)公有( public )成员可以在类外访问; 

2)私有( private )成员只能被该类的成员函数访问; 

3)保护( protected )成员只能被该类的成员函数或派生类的成员函数访问。

二、继承

Is a -à继承关系     A is a B

这个已有的类称为基类,新建的类称为子类。例如,定义手机是基类,那么派生类可以是华为或者是苹果,等等。

类继承父类的所有(数据成员、成员函数) 

继承的格式是什么?

        Class 子类名:继承方式 父类名{};

继承方式:

  Public继承: 父类中public成员继承到子类中,在类外、类内都可以访问

                       父类中private成员在子类类内中是不可访问

                      父类中protected成员在子类类内是可以访问

  Private继承:

               父类中public成员继承到子类中,在类外不可以访问,类内部是可以访问

               父类中private成员在子类类内是不可以访问的

               父类中protected成员在子类类内是可以访问

  Protected继承:

父类中public成员继承到子类中,在类外不可以访问,类内部是可以访问

                   父类中private成员在子类类内是不可以访问的

                   父类中protected成员在子类类内是可以访问

2、子类的构造函数

 

3、子类的析构函数:

   先构造的后析构

4、多层继承

 

 三、多态

  动态多态,是基于封装和继承的来实现的,多个子类对继承于一个父类的虚函数进行重写,来实现不同状态

实现动态多态的条件:

  1. 必须有继承
  2. 父类中有虚函数,子类有重写这个虚函数(子类中的函数和父类中的这个函数的首部必须是一模一样的,只有函数体内部是不同的)
  3. 通过父类的指针或者是引用去调用这个虚函数的时候

  多态实现的原理

  一个类中如果有虚函数,那这个类就有一张虚函数表,这个表中存的就是这个类所有虚函数的地址(函数指针数组)

  

  多态存在的问题 

 

用父类的指针去释放子类的对象,析构只执行了父类的,没有走子类的析构(析构函数的作用),会存在内存泄漏问题。

 父类的析构函数变成虚析构函数就可以实现delete 父类指针也会执行子类析构的效果 

重定义、重写、重载的区别

重载:同一个作用域(构造函数重载)

重定义(隐藏): 在继承关系中,子类定义了和父类同名的函数(只有函数名相同—不包括虚函数)

重写:在继承关系中,子类重写了父类的虚函数(函数的首部是一模一样的)

面试中与C++三大特性相关的问题通常指的是封装、继承和多态。封装是将数据和操作封装在一个类中,通过访问权限控制来保护数据,实现了数据的隐藏和封装。继承是一种面向对象编程的关键特性,允许一个类继承另一个类的属性和方法。多态是指同一操作作用于不同的对象,可以有不同的行为。下面我将分别讨论这三个特性。 封装是C++的一个重要特性,它通过将数据和操作封装在一个类中,提供了数据的隐藏和封装。通过访问权限控制,我们可以将一些私有数据隐藏起来,只允许通过类的公有接口进行访问。这样可以保护数据的完整性和安全性,同时也提供了更好的代码组织和维护。 继承是C++中的另一个重要特性,它允许一个类继承另一个类的属性和方法。通过继承,派生类可以获得基类的成员变量和成员函数,并且可以通过重写和扩展基类的方法来实现自己的功能。继承提供了代码复用和层次化设计的能力,同时也允许多态的实现。 多态是C++面向对象编程中的一个关键特性,它可以让同一个操作作用于不同的对象,产生不同的行为。多态通过虚函数实现,通过将函数声明为虚函数,派生类可以重写基类的方法,并通过基类的指针或引用调用派生类的方法。这样就可以根据对象的实际类型来决定调用哪个方法,实现了运行时的动态绑定。 综上所述,封装、继承和多态是C++面向对象编程中的三大特性。封装提供了数据的隐藏和封装,继承提供了代码复用和层次化设计的能力,多态实现了同一操作作用于不同对象的不同行为。这些特性在C++中广泛应用,是面试中常见的考点。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值