C++ 接口(抽象类)

本文介绍了C++中的抽象类(接口)的概念,强调抽象类不能实例化,主要用作其他类继承的基类。通过声明纯虚函数来定义抽象类,并指出若子类未实现纯虚函数,将导致编译错误。具体类则是实现了所有抽象基类纯虚函数的类,可以被实例化。
摘要由CSDN通过智能技术生成

C++ 接口(抽象类)

        设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。

       因此,如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重载纯虚函数,就尝试实例化该类的对象,会导致编译错误。

可用于实例化对象的类被称为具体类

如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的

具体代码:

#include <iostream>
using namespace std;
class ComputeSum {
	public:
	//提供接口框架的纯虚函数 
		virtual int getArea()=0;
		void setWidth(int n){
			width=n;
		} 
		void setLength(int m){
			length =m;
		}
	 
	protected:
			int width;
			int length;
};
class GetAddition: public ComputeSum{
	public:
		int getArea(){
		return (width+length);
	}	
};
class GetProduct: public ComputeSum{
	public:
		int getArea(){
		return width*length;
	}
};
int main( )
{
 	GetAddition sum1;
	GetProduct sum2;
 	sum1.setWidth(23);
	sum1.setLength(28);
 	sum2.setWidth(45);
 	sum2.setLength(66);
 	cout<<"Product:"<<sum1.getArea()<<endl;
 	cout<<"Addition:"<<sum2.getArea()<<endl;
	return 0;
}
输出结果:

Product:51
Addition:2970
请按任意键继续. . .




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值