C++纯虚函数

一般来说,许多时候基类并不能确定函数的实现方法,只能确定函数的功能。但是函数调用的时候必须要用到该函数。这种情况下,C++提供了一种机制,成为纯虚函数,属于虚函数的一种,体现了面向对象的多态性。

#include <iostream>
#define PI 3.14
using namespace std;
class Calculate{
	virtual double getPerimeter() = 0;
	virtual double getArea() = 0;
	virtual double getCircleArea() = 0;
};

class BaseData: public Calculate{
	private:
		double bottom;
		double height;
		double radius;
	public:
		BaseData(double a, double b, double c):bottom(a),height(b),radius(c){}
		double getPerimeter(){
			return 2 * (bottom + height);
		}
		double getArea(){
			return bottom * height;
		}
		double getCircleArea(){
			return PI * radius * radius;
		}
};

int main(){
	double a, b, c;
	cin>>a>>b>>c;
	BaseData* baseData = new BaseData(a,b,c);
	cout<<baseData->getPerimeter()<<endl;
	cout<<baseData->getArea()<<endl;
	cout<<baseData->getCircleArea()<<endl;
	delete baseData;
	return 0;
}


一些细节:

  1. 在上面代码中,Calculate被称为抽象类,抽象类就是包含纯虚函数的类。
  2. Calculate中声明的纯虚函数必须在派生类中全部实现,否则编译不会通过。
  3. 抽象类无法声明对象。
  4. 仅含有纯虚函数而不含有任何其他成员函数和成员变量的类就叫做接口类。
  5. 在swift语言中,无抽象类的概念,但是“协议”与抽象类概念类似,用法类似。
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值