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

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

🎈虚函数(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();//调用派生类的 
}
相关文章
|
6月前
|
存储 C++ 容器
第十四章:C++虚函数、继承和多态详解
第十四章:C++虚函数、继承和多态详解
55 0
|
5月前
|
编译器 C++ 开发者
通俗讲解 初学者一文看懂!虚函数、函数重载、重写的区别
函数重载允许在同一作用域内定义同名但参数列表不同的函数,提高代码灵活性和可读性,避免命名冲突。通过参数类型自动选择合适版本,如C++中的`print()`可处理整数、浮点数和字符串。虚函数实现运行时多态,基类指针调用时调用实际对象的版本。抽象类至少有一个纯虚函数,不能实例化,用于定义接口规范。抽象类和纯虚函数是构建多态和继承体系的基础,提供接口标准,减少代码冗余,增强代码清晰性和可维护性。
|
6月前
|
数据安全/隐私保护 C++
C++中的虚函数、纯虚函数与函数重写的技术性探讨
C++中的虚函数、纯虚函数与函数重写的技术性探讨
89 0
|
6月前
|
C++
C++|多态性与虚函数(2)|虚析构函数|重载函数|纯虚函数|抽象类
C++|多态性与虚函数(2)|虚析构函数|重载函数|纯虚函数|抽象类
|
存储 编译器 C++
<c++>虚函数与多态 | 虚函数与纯虚函数 | 多态的实现原理 | 虚析构函数
<c++>虚函数与多态 | 虚函数与纯虚函数 | 多态的实现原理 | 虚析构函数
137 0
|
6月前
|
NoSQL 编译器 程序员
『 C++类与对象 』虚函数与多态
『 C++类与对象 』虚函数与多态
【为什么】我可以从构造函数中调用虚函数吗?C++之父谈
【为什么】我可以从构造函数中调用虚函数吗?C++之父谈
137 0
|
存储 安全 算法
带你走入虚函数和多态的世界(c++)
📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程,会持续分享学习成果和小项目的 📖作者主页:热爱编程的小K 📖专栏链接:c++ 🎉欢迎各位→点赞👏 + 收藏💞 + 留言🔔​ 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🐾 ———————————————— 版权声明:本文为CSDN博主「热爱编程的小K」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_72157449
|
编译器 C++
C++学习——虚函数与纯虚函数
C++学习——虚函数与纯虚函数
351 0
C++学习——虚函数与纯虚函数
|
编译器 程序员 C++
【C++】C++虚函数知识点总结
【C++】C++虚函数知识点总结
【C++】C++虚函数知识点总结