纯虚函数是一种在C++中定义抽象类及其接口的技术,它的主要作用是强制要求子类来实现纯虚函数,达到接口重用的目的。
一、纯虚函数的定义与特点
1、定义:纯虚函数是一种没有函数实现的虚函数,通过在声明函数时使用“= 0”来指定,如:
class MyBaseClass{ public: virtual void myVirtualFunc() = 0; //纯虚函数的声明 };
2、特点:
- 纯虚函数只有函数声明,没有函数实现;
- 包含纯虚函数的类不能被直接实例化,只可作为抽象类来使用;
- 非抽象类继承抽象类时,必须实现纯虚函数才能被实例化。
二、纯虚函数的作用
1、实现多态。多态是面向对象程序设计中的核心思想之一,它允许同一个方法在不同的情况下有不同的实现,需要用到虚函数和纯虚函数。
2、强制要求子类实现该方法。纯虚函数没有实现,因此子类必须实现它,否则子类也是一个抽象类,无法实例化。
3、实现接口重用。通过抽象类中的纯虚函数,将子类的接口标准化,提高代码的可读性和复用性。
三、实例:使用纯虚函数实现图形类
我们可以通过使用纯虚函数来实现一个图形类,该类拥有计算面积和周长的方法,但定义类时不确定类的实现,只规定接口。根据面向对象的思想,我们先定义基类Shape,然后派生出各种图形子类,并在子类中实现基类中的纯虚函数。
1、定义基类Shape并声明纯虚函数
class Shape{ public: virtual double getArea() const = 0; //计算面积(纯虚函数) virtual double getPerimeter() const = 0; //计算周长(纯虚函数) };
2、定义子类Circle并实现基类中的纯虚函数
class Circle : public Shape{ private: double radius; public: Circle(double r = 0): radius(r){} //构造函数 double getArea() const { return 3.14 * radius * radius; } double getPerimeter() const { return 2 * 3.14 * radius; } };
3、定义子类Rectangle并实现基类中的纯虚函数
class Rectangle : public Shape{ private: double width; double height; public: Rectangle(double w = 0, double h = 0): width(w), height(h){} //构造函数 double getArea() const { return width * height; } double getPerimeter() const { return 2 * (width + height); } };
通过这种方式,我们可以实现方法的重用,提高代码的可读性和复用性。
四、总结
纯虚函数是C++中的一个重要特性,通过定义纯虚函数来实现抽象类和接口的定义。它允许派生类来实现特定的方法,并实现多态、接口重用等功能。在实际编程中,纯虚函数具有广泛的应用。