虚函数(impure virtual)

  C 的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。
  子类可以重写父类的虚函数实现子类的特殊化。
  如下就是一个父类中的虚函数:

class A

{

public:

virtual void ss()

{

cout<<"我是基类的虚函数"<<endl;

}

};

纯虚函数(pure virtual)

  C 中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。
  C 中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。
  C 中的纯虚函数也是一种“运行时多态”。
  如下面的类包含纯虚函数,就是“抽象类”:

class A

{

public:

virtual void out1(string s)=0;  //我是基类的虚函数

};

举个栗子

#include

#include

#include

#include

#include

using namespace std;

class a

{

private:

public:

a(){      //构造函数用内联函数的形式

}

//虚函数

virtual  void  xhs(){          //这个虚函数必须得在基类中实现

cout<<"我是基类的虚函数"<
        }  //派生类中可以不写这个函数,但是派生类对象调用时会调用积累的虚函数

//纯虚函数

virtual void cxhs() =0;  //这个纯虚函数不在基类中实现,必须在子类中实现

};

class b:public a

{

private:

public:

void xhs(){         //这个是可有可无的

cout<<"我是派生类覆盖基类虚函数的函数"<
        }                        //*

//*

void cxhs(){         //这个是必须有实现的

cout<<"我是派生类覆盖基类虚函数的函数"<
        }       //*              //*

};              //*              //*

int main()      //*              //*

{               //*              //*

b c;        //*              //*

c.xhs();    //*           //调用派生类的

c.cxhs();//调用派生类的

}

虚函数和纯虚函数的区别

1)、纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。

纯虚函数一般没有代码实现部分,如 virtual void print() = 0; 2)而一般虚函数必须要有代码的实现部分,否则会出现函数未定义的错误。

2)、包含纯虚函数的类不能定义其对象,而包含虚函数的则可以。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

虚函数和纯虚函数的区别是什么?相关推荐

  1. java中所有函数都是虚函数_关于Java:虚拟函数与纯虚函数之间的区别是什么?...

    本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: C++ Virtual/Pure Virtual Explained 虚函数和纯虚函数有什么区别? CPP中的纯虚函数与 ...

  2. c语言中虚函数和纯虚函数,虚函数和纯虚函数的区别是什么?

    虚函数和纯虚函数的区别:1.纯虚函数只有定义,没有实现:而虚函数既有定义,也有实现的代码.2.包含纯虚函数的类不能定义其对象,而包含虚函数的则可以. 相关推荐:<C++视频教程> 虚函数( ...

  3. 一口气搞懂《虚函数和纯虚函数》

    学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你未必了解她为什么要那样做,未必了解她种种行为背后的所思所想.深知你不想在流于表面语法上的蜻蜓点水似是而非,今天我们就一起来揭 ...

  4. c++ 虚函数,纯虚函数的本质区别

    转载博客:https://mp.weixin.qq.com/s?__biz=MzAxNzYzMTU0Ng==&mid=2651289202&idx=1&sn=431ffd1fa ...

  5. 虚函数和纯虚函数详解

    https://mp.weixin.qq.com/s?__biz=MzAxNzYzMTU0Ng==&mid=2651289202&idx=1&sn=431ffd1fae4823 ...

  6. 一个例子彻底搞懂C++的虚函数和纯虚函数

    学习C++的多态性,你必然听过虚函数的概念,你必然知道有关她的种种语法,但你未必了解她为什么要那样做,未必了解她种种行为背后的所思所想.深知你不想在流于表面语法上的蜻蜓点水似是而非,今天我们就一起来揭 ...

  7. C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)

    基本信息 每一个类都有一个虚表,以及虚表指针; 虚表的内容是编译器决定的,虚表中用于存放虚函数的指针, 程序运行时的类型信息等; 每个多态对象都存放着一个指向当前类型的虚表的指针, 该指针在构造函数中 ...

  8. c/c++入门教程 - 2.4.7 多态、函数地址晚绑定(重写,虚函数,纯虚函数,抽象类,虚析构,纯虚析构)

    目录 4.7 多态 4.7.1 多态的基本概念(超级重要) 4.7.2 多态的原理刨析(超级重要) 4.7.2 多态案例一:计算器类 4.7.3 纯虚函数和抽象类 4.7.4 多态案例二 - 制作饮品 ...

  9. 虚函数、纯虚函数、虚继承、多继承

    来源:http://www.tnove.com/?p=57 C++的一个特征是多太,其中多态主要表现在 1.编译时多态  函数overload实现 2.运行是多态  虚函数override实现 其中虚 ...

最新文章

  1. 深度学习框架:GPU
  2. ef linq 中判断实体中是否包含某集合
  3. 大家猜猜看除了围棋,人工智能下一个颠覆的领域是什么?
  4. 全球首款碳纳米管通用计算芯片问世!RISC-V架构,5倍于摩尔定律,Nature连发三文推荐...
  5. ThreadLocal是什么?
  6. angularjs 让当前路由重新加载_Spring Cloud Gateway的动态路由怎样做?集成Nacos实现很简单...
  7. Math.abs为Integer.Min_VALUE返回错误的值
  8. 客户端与服务端的TCP通信实现(Qt)
  9. WordPress翻译更新失败解决方法
  10. GStreamer 编写一个简单的MP3播放器
  11. SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法
  12. sendmessage()模拟鼠标点击
  13. educoder 初始mongodb
  14. JavaEE学习--javascript中的正则表达式
  15. 拓端tecdat|R语言进行相关矩阵分析及其网络可视化
  16. 如何打印复印试卷,试卷打印复印去哪里方便
  17. Android系统架构和应用程序基本概念详解
  18. 甘谷2021年高考成绩查询入口,筑梦百天,赢在高考|甘谷一中2021届高考百日誓师大会...
  19. 对象存储哪家价格便宜?最便宜的云存储推荐!
  20. 江苏统考计算机英语作文,2017年高考江苏卷英语作文

热门文章

  1. 系统属性的JDK 12 Javadoc标记
  2. how2java_HOW-TO:在Spring 4和Java 7中使用@PropertySource批注
  3. java微妙_编码Java时的10个微妙的最佳实践
  4. 尽早查看针对Java 11的功能
  5. 线程同步,线程不同步_重新同步多线程集成测试
  6. stackexchange_通过Spring Social推特StackExchange –第1部分
  7. Java中多线程的性能比较
  8. glassfish_具有GlassFish和一致性的高性能JPA –第1部分
  9. Spring注释,我从来没有机会使用第1部分:@primary
  10. 如何编写NetBeans插件