面向对象的程序设计-7-纯虚函数和抽象类

纯虚函数就是基类只定义了函数体,没有实现过程。在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。定义一个函数为虚函数,不代表函数为不被实现的函数。定义它为虚函数是为了允许用基类的指针来调用子类的这个函数。

       定义一个函数为纯虚函数,才代表函数没有被实现。定义它是为了实现一个接口,起到一个规范的作用,规范继承这个。若一个类中至少有一个纯虚函数,则该类称为抽象类。抽象类只能用作其他类的基类,不能建立对象。抽象类不能用作参数类型、函数返回类型或显式转换的类型,但是可以声明抽象类的指针和引用。从基类继承来的纯虚函数,在派生类中仍是虚函数。

可以通过以下的例子简单了解下:

#include <iostream>
using namespace std;
class num
{
private:
int val;
public:
num(int i){val=i;}
virtual void show()=0;//纯虚函数
int get_val(){return val;}
};
class hextype:public num
{
public:
hextype(int i):num(i)
{}
void show(){cout<<hex<<" "<<get_val()<<endl;}//按照十六进制输出
};
class dectype:public num
{
public:
dectype(int i):num(i){}
void show(){cout<<dec<<get_val()<<endl;}//仍按十进制输出
};
void fun(num &n)
{n.show();}
void main()
{
dectype d(50);//输出十进制数
fun(d);//d.show
hextype h(19);//16进制
fun(h);//h.show();
}
//cout<<hex<<i<<endl; //输出十六进制数
//cout<<oct<<i<<endl; //输出八进制数
//cout<<dec<<i<<endl; //输出十进制数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值