C++抽象类解析

文章目录

为什么用

  • 如果没有抽象类,我们无法将别人提供的接口拿来编译,只能将别人的源码或者库都拿来。这也就是大家所说的接口与实现分离。
  • 将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为对应暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现

举例:如果 ABC做的是同一个工程,为了保证代码不重,方便维护。这样就不能再使用源码或者编译成的库+h文件给BC的方法了,只能将头文件提供给BC,而且这个头文件要做成一个抽象类,这样BC才能编译通过。

  • 注意:抽象类只能作为基类来使用,不能定义抽象类的对象。当抽象类的派生类实现了继承而来的纯虚函数后才能实例化对象

如何用

#include<iostream>
using namespace std; 
 
class People{//People为抽象类
	public:
		virtual void setID(int ID)=0;//申明纯虚函数 
		virtual int getID()=0;
		People(int _ID):ID(_ID){};//父类的构造函数 
	protected:
		int ID;
		
};
 
 
class Student:public People{
	public:
		void setID(int ID);//实现父类的虚函数 
		int getID();
		Student(int _ID):People(_ID){};//注意是向父类传递参数
	private:
	   	
};
 
void Student::setID(int ID){
	this->ID=ID;
}
int Student::getID(){
	return ID;
}
 
int main(){
	Student s(1);
	cout<<s.getID()<<endl;
	
	return 0;
}

注:

  1. 虚函数的声明
virtual 函数类型 函数名(参数表)=0//等于0表示没有函数体
  1. 带有纯虚函数的类称为抽象类,不可实例化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值