抽象基类(ABC)
至少包含一个纯虚函数叫做ABC
- 纯虚函数的声明
虚函数 = 0;
一个简单的demo
#ifndef __TEST_2_H_
#define __TEST_2_H_
#include <iostream>
#include<string>
using namespace std;
typedef unsigned int uint;
class Bcc
{
private:
//protected:
string name;
int year;
public:
Bcc(const string &n = "zhangsan",int y = 21);
Bcc(){}
string return_name(){return name;}
int return_year(){return year;}
virtual void get(const string &n,int y) = 0;
virtual ~Bcc(){};
};
class Peo1 : public Bcc
{
private:
string gender;
string name;
int year;
public:
Peo1(const string & g,const string &n,int y);
void print_value();
virtual void get(const string &n,int y);
~Peo1(){};
};
#endif
#include"test_3.h"
Bcc::Bcc(const string & n,int y)
{
name = n;
year = y;
}
// Peo1::Peo1()
// {
// name = "zhang";
// year = 22;
// }
Peo1::Peo1(const string & g,const string &n,int y):Bcc(n,y)
{
gender = g;
}
void Peo1::get(const string &n,int y)
{
}
void Peo1::print_value()
{
cout << "name = " << Bcc::return_name() << "\n";
cout << "year = " << Bcc::return_year() << "\n";
cout << "gender = " << gender << "\n";
}
#include "test_3.h"
int main()
{
Peo1 p1("male","chen",18);
p1.get("zhang",22);
p1.print_value();
return 0;
}
输出结果:
- 注意:
凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。