抽象類概念=接口
類內部只有函數聲明沒有實現,不能被實例化,只能被繼承並對虛方法進行全部實現才能實例化子類
純虛函數時實現抽象類的標準
- virtual 返回值 函數名(參數) = 0;
- 子類就對這個方法進行實現
- 父類指向或引用子類
小案例-使用抽象類計算程序員工作
main.cpp
#include <iostream>
#include "coder.h"
#include "seniorCoder.h"
#include "juniorCoder.h"
#include <stdlib.h>
static int total = 0;
void total_add(coder* c){
total += c->getsalary();
}
int main(){
coder* sc[] ={new seniorCoder,new juniorCoder};
total_add(sc[0]);
total_add(sc[1]);
cout << total << endl;
system("pause");
}
coder.h
#pragma once
#include <iostream>
using namespace std;
class coder
{
public:
coder(void);
virtual int getsalary()= 0;
virtual ~coder(void);
};
coder.cpp
#include "coder.h"
coder::coder(void)
{
}
coder::~coder(void)
{
}
seniorCoder.h
#pragma once
#include "coder.h"
class seniorCoder :
public coder
{
public:
seniorCoder(void);
virtual int getsalary();
virtual ~seniorCoder(void);
private:
int salary;
};
seniorCoder.cpp
#include "seniorCoder.h"
seniorCoder::seniorCoder(void)
{
salary = 30000;
}
int seniorCoder::getsalary(){
cout << "高級" << salary << endl;
return salary;
}
seniorCoder::~seniorCoder(void)
{
}
juniorCoder.h
#pragma once
#include "coder.h"
class juniorCoder :
public coder
{
public:
juniorCoder(void);
virtual int getsalary();
virtual ~juniorCoder(void);
private:
int salary;
};
juniorCoder.cpp
#include "juniorCoder.h"
juniorCoder::juniorCoder(void)
{
salary = 10000;
}
int juniorCoder::getsalary(){
cout << "初級" << salary << endl;
return salary;
}
juniorCoder::~juniorCoder(void)
{
}