虚函数和纯虚函数的区别,再不学就被卷没了

简介: 虚函数和纯虚函数的区别,再不学就被卷没了

🎈虚函数(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<iostream>
#include<string>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
class a
{
  private:
  public:
    a(){      //构造函数用内联函数的形式 
    }
    //虚函数 
    virtual  void  xhs(){        //这个虚函数必须得在基类中实现 
      cout<<"我是基类的虚函数"<<endl;//即使是空的虚函数也要在基类中实现 
    }  //派生类中可以不写这个函数,但是派生类对象调用时会调用积累的虚函数 
    //纯虚函数 
    virtual void cxhs() =0;  //这个纯虚函数不在基类中实现,必须在子类中实现 
}; 
class b:public a
{
  private:
    public:
      void xhs(){         //这个是可有可无的 
        cout<<"我是派生类覆盖基类虚函数的函数"<<endl; 
    }                        //*
                             //*
    void cxhs(){         //这个是必须有实现的 
      cout<<"我是派生类覆盖基类虚函数的函数"<<endl; 
    }       //*              //*
};        //*        //*
int main()      //*              //*
{               //*              //*
  b c;        //*              //* 
  c.xhs();    //*           //调用派生类的 
  c.cxhs();//调用派生类的 
}
相关文章
|
3月前
|
存储 C++ 容器
第十四章:C++虚函数、继承和多态详解
第十四章:C++虚函数、继承和多态详解
28 0
|
28天前
|
存储 算法 编译器
【C++入门到精通】C++入门 —— 多态(抽象类和虚函数的魅力)
多态是面向对象编程中的一个重要概念,指的是同一个消息被不同类型的对象接收时产生不同的行为。通俗来说,**就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态**。
43 0
|
3月前
|
NoSQL 编译器 程序员
『 C++类与对象 』虚函数与多态
『 C++类与对象 』虚函数与多态
|
9月前
|
存储 编译器 C++
<c++>虚函数与多态 | 虚函数与纯虚函数 | 多态的实现原理 | 虚析构函数
<c++>虚函数与多态 | 虚函数与纯虚函数 | 多态的实现原理 | 虚析构函数
99 0
|
9月前
|
Java
【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?
【Java面向对象】方法重载,方法重写你还傻傻弄不清吗?
57 0
|
12月前
|
存储 安全 算法
带你走入虚函数和多态的世界(c++)
📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享学习成果和小项目的 📖作者主页:热爱编程的小K 📖专栏链接:c++ 🎉欢迎各位→点赞👏 + 收藏💞 + 留言🔔​ 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🐾 ———————————————— 版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_72157449
|
Linux C++
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(下)
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(下)
109 0
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(下)
|
编译器 C++
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(上)
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(上)
120 0
【C++】多态(万字详解) —— 条件 | 虚函数重写 | 抽象类 | 多态的原理(上)
|
编译器 C++
C++学习——虚函数与纯虚函数
C++学习——虚函数与纯虚函数
302 0
C++学习——虚函数与纯虚函数