抽象类和纯虚函数
1、纯虚函数
virtual函数声明时后面加上 “=0”
如:virtual void eating(void) = 0;
注意:纯虚函数不需要定义
2、抽象类
抽象类:含有纯虚函数的类
抽象类不能有实例对象
若子类没有覆写所有的纯虚函数,则子类还是抽象类
作用:向下派生类提供好统一接口
例子:
#include <iostream>
#include <string.h>
#include <unistd.h>
using namespace std;
class Human {
private:
int a;
public:
virtual void eating(void) = 0;
virtual void wearing(void) = 0;
virtual void driving(void) = 0;
virtual ~Human() { cout<<"~Human()"<<endl; }
virtual Human* test(void) {cout<<"Human's test"<<endl; return this; }
};
class Englishman : public Human {
public:
void eating(void) { cout<<"use knife to eat"<<endl; }
void wearing(void) {cout<<"wear english style"<<endl; }
void driving(void) {cout<<"drive english car"<<endl; }
virtual ~Englishman() { cout<<"~Englishman()"<<endl; }
virtual Englishman* test(void) {cout<<"Englishman's test"<<endl; return this; }
};
class Chinese : public Human {
public:
void eating(void) { cout<<"use chopsticks to eat"<<endl; }
void wearing(void) {cout<<"wear chinese style"<<endl; }
//void driving(void) {cout<<"drive chinese car"<<endl; }
virtual ~Chinese() { cout<<"~Chinese()"<<endl; }
virtual Chinese* test(void) {cout<<"Chinese's test"<<endl; return this; }
};
class Guangximan : public Chinese {
void driving(void) {cout<<"drive guangxi car"<<endl; }
};
int main(int argc, char **argv)
{
//Human h;
Englishman e;
Guangximan g;
return 0;
}