什么是纯虚函数?
- 将成员函数声明为virtual。
- 该函数没有函数体(后面加上=0)。
class Test
{
public:
//纯虚函数
virtual double GetValue() = 0;
};
抽象类
任何继承该抽象类的子类都必须遵守的标准
- 含有纯虚函数的类,被称为抽象类(Abstract Class)。
- 抽象类也可以包含普通的函数。
- 抽象类不能实例化。
class Test
{
public:
//纯虚函数
virtual double GetValue() = 0;
void Print()
{
printf("Hello\n");
}
};
房间例子
#include <iostream>
class Base
{
public:
//纯虚函数 获得进入房间的人数
virtual int GetPeopleNum() = 0;
//纯虚函数 获得房间能容纳的最大人数
virtual int GetPeopleMaxNum() = 0;
};
class RoomA :public Base
{
private:
//进入房间人数
int PeopleNum;
public:
RoomA()
{
}
RoomA(int PeopleNum)
{
this->PeopleNum = PeopleNum;
}
//获得进入房间的人数
int GetPeopleNum()
{
return PeopleNum;
}
//获得房间能容纳的最大人数
int GetPeopleMaxNum()
{
return GetPeopleNum() * 2;
}
};
class RoomB :public Base
{
private:
//进入房间人数
int PeopleNum;
public:
RoomB()
{
}
RoomB(int PeopleNum)
{
this->PeopleNum = PeopleNum;
}
//获得进入房间的人数
int GetPeopleNum()
{
return PeopleNum;
}
//获得房间能容纳的最大人数
int GetPeopleMaxNum()
{
return GetPeopleNum() * 4;
}
};
int main()
{
RoomA r1(10);
RoomB r2(20);
int r1_Num = r1.GetPeopleNum();
int r1_NumMax = r1.GetPeopleMaxNum();
int r2_Num = r2.GetPeopleNum();
int r2_NumMax = r2.GetPeopleMaxNum();
return 0;
}