首页 后端开发 C#.Net教程 虚函数和纯虚函数的区别是什么?

虚函数和纯虚函数的区别是什么?

Nov 17, 2020 am 09:30 AM
纯虚函数 虚函数

虚函数和纯虚函数的区别:1、纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。2、包含纯虚函数的类不能定义其对象,而包含虚函数的则可以。

虚函数和纯虚函数的区别是什么?

相关推荐:《C++视频教程

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

虚函数和纯虚函数的区别

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

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

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

以上是虚函数和纯虚函数的区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C++ 函数调试详解:如何调试虚函数中的问题? C++ 函数调试详解:如何调试虚函数中的问题? May 02, 2024 pm 03:42 PM

虚函数调试方法:设置断点单步执行;使用assert()验证条件;利用调试器工具检查动态类型、函数栈和重新定义虚函数。

C++ 函数重载与虚函数如何协作? C++ 函数重载与虚函数如何协作? Apr 26, 2024 am 10:09 AM

C++中函数重载允许为具有不同参数的同名函数定义不同的实现,而虚函数允许在派生类中覆盖基类函数,实现多态性。函数重载和虚函数可以协同工作,通过在基类中设计一个虚拟重载函数,派生类可以仅重载特定参数组合的版本,从而提供更灵活的多态性,如实战案例中计算不同类型形状到原点的距离。

C++ 友元函数与虚函数的交互 C++ 友元函数与虚函数的交互 Apr 16, 2024 pm 03:45 PM

在C++中,友元函数与虚函数交互使友元函数可以访问虚函数,并调用派生类中的友元函数访问基类的私有成员。这种交互可用于访问继承体系中隐藏的数据或实现多态行为。

C++ 中如何声明和调用虚函数? C++ 中如何声明和调用虚函数? Apr 12, 2024 pm 04:03 PM

虚函数是一种多态性机制,允许派生类覆盖其基类的成员函数:声明:在函数名前加上关键字virtual。调用:使用基类指针或引用,编译器将动态绑定到派生类的适当实现。实战案例:通过定义基类Shape及其派生类Rectangle和Circle,展示虚函数在多态中的应用,计算面积和绘制形状。

C++ 函数可以声明为虚函数吗?虚函数的作用是什么? C++ 函数可以声明为虚函数吗?虚函数的作用是什么? Apr 19, 2024 pm 06:06 PM

C++中的虚函数允许派生类重新定义从基类继承的方法,实现多态。其语法为:在基类中用virtual关键字声明虚函数,在派生类中用override重新定义。通过指针或引用调用虚函数,可实现派生类对象调用基类虚函数。虚函数的主要作用包括:实现多态、支持动态绑定和提供抽象。

C++ 中纯虚函数如何促进多态性? C++ 中纯虚函数如何促进多态性? Jun 03, 2024 pm 08:01 PM

在C++中,纯虚函数在基类中被声明但没有实现,迫使派生类实现特定行为,以促进多态性。派生类必须实现所有纯虚函数,否则它们也必须成为抽象类。纯虚函数可确保只有实现了所有纯虚函数的类才能用作抽象类的指针或引用,从而确保多态性。在图形绘制等实际案例中,它可以确保所有形状对象都能响应draw()调用,实现多态性,提高代码的可扩展性和可维护性。

C++ 虚函数的奥秘揭晓 C++ 虚函数的奥秘揭晓 Apr 19, 2024 am 09:18 AM

虚函数使用动态绑定在运行时确定要调用的函数,实现多态性。其优点包括可扩展性、可重用性,但也会带来开销和复杂性。虚函数经常用于实现不同类型的对象以统一的方式调用方法。

C++中的虚拟函数和纯虚函数的应用技巧 C++中的虚拟函数和纯虚函数的应用技巧 Aug 22, 2023 am 11:33 AM

C++中的虚拟函数和纯虚函数是许多使用面向对象编程的程序员常用的工具。在正确使用它们的前提下,可以大大提高程序的灵活性和可维护性。本文将探讨虚拟函数和纯虚函数的应用技巧,并分享一些实际开发中的经验。一、虚拟函数1.什么是虚拟函数?虚拟函数是用于实现多态的一种技术,它允许类的成员函数在运行时动态确定。当使用基类指针或引用调用虚拟函数时,程序会根据实际对象的类型

See all articles