专栏首页分享学习虚函数与纯虚函数的区别

虚函数与纯虚函数的区别

虚函数(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();//调用派生类的 
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux系统Apache2.4+Tomcat7.0整合配置

    今天是9月1号了,又开学了,中午跟同事一起去附近一个大学的食堂吃饭,看见了好多学生,走在食堂里总有种格格不入的感觉,感叹之余,发现自己已不再是学生了。大学时光多...

    逐梦的青春
  • LINUX的部分目录解释

    逐梦的青春
  • 执行*.sh 文件的6种方式

    前三个是表示在当前的父shell中生成一个子shell来运行*.sh文件 sh test.sh bash test.sh ./test.sh (./...

    逐梦的青春
  • C++纯虚函数与抽象类

    为什么说虚函数是C++最重要的特性之一呢,因为虚函数承载着C++中动态联编的作用,也即多态,可以让程序在运行时选择合适的成员函数。虚函数必须是类的非静态成员函数...

    Dabelv
  • 万物皆可 Serverless 之关于云函数冷热启动那些事儿

    本文带大家来了解一下云函数的冷热启动过程,以及面对云函数这种冷热启动模式,开发者需要注意哪些问题。 效果展示 云函数被第一次调用(冷启动) ? 云函数被第一次...

    腾讯云serverless团队
  • 【玩转腾讯云】万物皆可Serverless之关于云函数冷热启动那些事儿

    然后我们再来看一下腾讯云云函数文档里的简介 https://cloud.tencent.com/document/product/583/9199

    乂乂又又
  • 1小时精通c++面向对象编程

    重载二元运算符,只显式说明一个参数;该参数为操作数的右操作数,左操作数由this指针(指向调用该成员函数的对象)提供

    mathor
  • 原 PostgreSQL的系统函数分析记录

    王果壳
  • C++多态的实现原理剖析

    首先放上结论:C++的多态是通过一张虚函数表(Virtual Table) 来实现的, 简称为 V-Table。 在这个表中, 主要是一个类的虚函数的地址表, ...

    用户5426759
  • 深度学习中的激活函数一览

    激活函数概念 所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

    glm233

扫码关注云+社区

领取腾讯云代金券