c++-虚函数与纯虚函数

来源:互联网 发布:java oa审批流程开发 编辑:程序博客网 时间:2024/05/09 18:55

虚函数和纯虚函数

静态联编

所谓静态联编,是指程序之间的匹配、连接在编译阶段,即程序运行之前完成,也称为早起匹配。大量的程序代码使静态联编的。例如:调用一个已经说明的函数,编译期间就能准确活得函数入口地址、返回地址和参数传递的信息,从而完成匹配。

动态联编

动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编。switch语句是一个动态联编的例子程序编译阶段不能预知switch表达式的值,一直要等到程序运行时,对表达式求职之后,才能实现case子句匹配,决定代码执行的分支。

虚函数与动态联编

    virtual ReturnType FunctionName (Parameter)  //需要实现

冠以关键字virtual的成员函数成为虚函数。
实现运行时多态的关键是先要说明虚函数,而且必须用基类指针调用派生类的不同实现版本。尽管可以像调用其他成员函数那样,显示的用对象名来调用一个虚函数,但是只有使用同一个基类指针访问虚函数,才称为运行时多态

虚函数的重要特性

重载一个虚函数时,要求函数名,返回类型,参数个数,参数类型和顺序完全相同。

虚析构函数

构造函数不能是虚函数。因为建立一个派生类对象时,必须从类层次的根开始,沿着继承路径逐个调用基类的构造函数,直至自身的构造函数,不能选择性的调用构造函数。所以虚构造函数没有意义,定义虚构造函数会造成语法错误。

纯虚函数

    virtual ReturnType FunctionName (Parameter) = 0;  

纯虚函数是在基类中说明的函数,它在该基类中没有实现定义,要求所有派生类都必须定义自己的版本。虚函数的实现在他的派生类中实现。

抽象类

抽象类至少要有一个纯虚函数。

  • 抽象类职能用作其他类的基类
  • 抽象类不能建立对象
  • 抽象类不能用作参数类型、函数返回类型、显示类型转换

虚函数与纯虚函数的比较

  1. 虚函数的类用于继承,继承的同时也继承了父类的实现;纯虚函数关注的是接口的统一性,实现由子类完成。
  2. 对于虚函数来说,父类和子类都有各自的版本。由多态方式调用的时候动态绑定。
  3. 实现了纯虚函数的子类,该纯虚函数在子类中就变成了虚函数。
  4. 虚函数是C++中用于实现多态的机制。核心理念就是通过基类访问派生类定义的函数。
原创粉丝点击