c++学习总结

c++与c的最大区别就是c++面向对象,c面向过程。

本次学习觉得最难的是多态性这个地方,所以现在来试着总结一下。

所谓多态性就是不同对象收到相同的消息时,产生不同的动作。这样,就可以用同样的接口访问不同功能的函数,从而实现一个接口多种方法。

主要实现是通过虚函数来进行实现。

虚函数的定义是在基类中进行的,它是在基类中需要定义为虚函数的成员函数的声明中冠以关键字virtual,从而提供一种接口界面。

定义方式:

virtual 返回类型 函数名(形参表)

{ 函数体 }

C++规定,如果在派生类中,没有用virtual显式地给出虚函数声明,这时系统就会遵循以下的规则来判断一个成员函数是不是虚函数:该函数与基类的虚函数是否有相同的名称、参数个数以及对应的参数类型、返回类型或者满足赋值兼容的指针、引用型的返回类型。

含有纯虚函数得类是抽象类,抽象类不能实例化,抽象类只能作为其他类的基类来使用。

虚函数主要的几点:

1. 由于虚函数使用的基础是赋值兼容规则,而赋值兼容规则成立的前提条件是派生类从其基类公有派生。因此,通过定义虚函数来使用多态性机制时,派生类必须从它的基类公有派生。
2. 必须首先在基类中定义虚函数;
在派生类对基类中声明的虚函数进行重新定义时,关键字virtual可以写也可以不写。
3. 虽然使用对象名和点运算符的方式也可以调用虚函数但是,这种调用是在编译时进行的静态连编,它没有充分利用虚函数的特性,只有通过基类指针访问虚函数时才能获得运行时的多态性
一个虚函数无论被公有继承多少次,它仍然保持其虚函数的特性。
4. 虚函数必须是其所在类的成员函数,而不能是友元函数,也不能是静态成员函数,因为虚函数调用要靠特定的对象来决定该激活哪个函数。
5. 内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的。即使虚函数在类的内部定义,编译时仍将其看做非内联的。
6. 构造函数不能是虚函数,但是析构函数可以是虚函数,而且通常说明为虚函数。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值