纯虚函数定义如下: virtual functionname (parameter ) =0 ;
类的一个成员定位虚函数的实际意义在于让C++知道该函数并无意义,它的作用只是为了让派生类进行函数重载保留位置。纯虚函数的定义方法就是在类的虚函数后面加上 “ =0 ” 标记,类中一旦出现了纯虚函数的定义,那么此类为抽象类。
实例 1.
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
//抽象类定义
class abstractcls
{
public:
abstractcls (float speed, int total) //构造函数
{
abstractcls::speed=speed;
abstractcls::total=total;
}
virtual void showmember()=0; //纯虚函数的定义
protected:
float speed;
int total;
};
class car public : abstractcls //抽象类派生类
{
public:
//派生类的构造函数,实现基类的构造函数
car(int aird, float speed, int total):abstractcls(speed,total)
{
car::aird=aird;
}
virtual void showmember() //派生类函数重载
{
cout<<speed<<"1"<<total<<"2"<<endl;
}
protected:
int aird;
};
调用如下:
int main(void)
{
car b(250,150,4);
b.showmember();
return 0;
}
总结,
什么情况下需要使用纯虚函数:
1,当想要在基类中抽象出一个方法,且该类被继承类而不能被实例化时。
2,基类的方法必须在派生类中被实现时。
3,多个对象具有公共的抽象属性,但却有不同的实现要求时。
实例2. 类A有两个纯虚成员函数 Lock(),unLock() 和一个虚析构函数
class A {
public:
virtual void Lock(void)=0;
virtual void unLock(void)=0;
virtual ~A(void);
};
类A实际上并没有实现这些函数,只是声明了他们。因为具有纯虚函数任何类不能用于创建运行时的对象,为了使用这个类,用户必须从这个抽象类派生出一个派生类来。而且为抽象类声明的每一个纯虚函数提供函数的定义与实现。
B类从A类派生,并提供了2个纯虚函数的定义。
class B :public A
{
public:
B(void);
~B(void);
virtual void Lock(void) {pthread_mutex_lock(x);}
virtual void unLock(void) {pthread_mutext_unlock(x);}
protectd:
pthread _mutex_t x;
};
B类通过POSIX 函数 pthread_mutext_lock() 和 pthread_mutext_unlock() 已经实现了两个纯虚函数。如果B只实现了其中的一个纯虚函数,那么B类仍然认为是一个纯抽象类,因为它仍然包含一个纯虚函数。
总结:
纯虚函数充当实现策略,它的任何用户在使用前必须实现纯虚函数。所以抽象类提供了规范。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qinsong729/archive/2009/08/25/4483085.aspx
分享到:
相关推荐
总结来说,虚函数和纯虚函数都是C++面向对象编程的关键特性,它们分别提供了多态性和接口约束。虚函数实现了运行时的多态,允许通过基类接口调用派生类的成员函数;纯虚函数则定义了抽象基类,确保派生类必须实现...
在C++编程语言中,虚函数和纯虚函数是实现多态性的关键机制,但它们具有不同的特点和用途。首先,我们需要了解什么是虚函数。虚函数是基类中通过关键字virtual声明的成员函数,它允许派生类重新定义该函数,从而实现...
#### 纯虚函数与抽象类 在C++中,**纯虚函数**是一种特殊的虚函数,它没有默认实现,必须由派生类提供具体的实现。纯虚函数通过在声明时添加`= 0`来标记。一个包含至少一个纯虚函数的类被称为**抽象类**,抽象类不...
在C++编程语言中,虚函数(Virtual Functions)和纯虚函数(Pure Virtual Functions)是面向对象编程的重要特性,它们都是实现多态性的方式,但各自有着不同的应用场景和功能特点。下面将详细解释这两个概念以及它们...
C++虚函数和纯虚函数的区别 C++ 中的虚函数和纯虚函数是两种不同的函数声明方式,用于实现多态(polymorphism)机制。 虚函数 虚函数声明如下:virtual ReturnType FunctionName(Parameter) ;虚函数必须实现,如果...
### C++中的虚函数与纯虚函数详解 #### 一、引言 在面向对象编程中,多态性是一项非常重要的特性,它允许程序通过基类指针或引用调用派生类的方法。C++中实现多态性的主要机制之一就是虚函数。虚函数和纯虚函数是...
在C++编程语言中,虚基类、虚函数与纯虚函数是面向对象编程中用于实现多态性的重要概念。本文将深入解析这三个概念,并通过示例代码来具体阐述其用法与作用。 ### 虚基类 虚基类(Virtual Base Class)是用来解决...
c++普通函数,虚函数,纯虚函数的区别
### C++虚函数与虚函数表的理解 #### 一、虚函数的概念 在C++中,虚函数(Virtual Function)是一种特殊类型的成员函数,它允许基类指针或引用指向派生类对象,并通过该基类指针或引用调用派生类中重写的同名函数。...
### C++纯虚函数的用法及详解 #### 一、引言 在学习C++的过程中,虚函数是一个重要的概念,特别是在实现多态性时。本文将深入探讨纯虚函数的概念及其在C++中的应用。 #### 二、C++中的多态与虚函数 在C++中,多...
在C++编程语言中,函数覆盖、虚函数和纯虚函数是面向对象编程中的关键概念,它们涉及到类的继承和多态性。本文将详细探讨这三个概念,以及它们之间的对比。 1. **函数覆盖(Function Overriding)** 函数覆盖发生...
虚函数和纯虚函数是C++面向对象编程中的核心概念,它们主要涉及到继承和多态性的实现。在C++中,虚函数(virtual function)允许我们通过基类指针或引用调用派生类中重定义的同名函数,从而实现动态绑定或运行时多态...
纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。 class Cman { public: virtual void Eat(){……}; void ...
每个具有虚函数的类都有一个与之关联的虚函数表,其中包含了该类及其所有基类虚函数的地址。当通过指针调用虚函数时,编译器会查找该指针所指向对象的虚函数表,然后调用表中对应的函数地址。这个过程在运行时完成,...
本文较为深入的分析了C++中虚函数与纯虚函数的用法,对于学习和掌握面向对象程序设计来说是至关重要的。具体内容如下: 首先,面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承、动态...
### C++ 中的继承、多态、虚函数与纯虚函数 #### 继承 **概念解析** 在面向对象编程语言如 C++ 中,继承是一种让一个类(派生类)能够继承另一个类(基类)特性的机制。这种机制不仅能够重用代码,还能在原有基础...
总之,C++的虚函数和纯虚函数是实现多态的核心工具。虚函数允许通过基类指针调用派生类的方法,实现运行时多态;而纯虚函数则用于定义抽象基类和接口,确保所有派生类都必须实现某些特定功能。这种灵活性和通用性...
三、纯虚函数与抽象类 1. 纯虚函数:纯虚函数是不提供具体实现的虚函数,用`=0`表示。如果一个类含有纯虚函数,那么这个类就是抽象类,不能实例化对象。 2. 抽象类:抽象类作为基类使用,用于定义接口。在C++中,...