cpp-抽象類(接口)與純虛函數

抽象類概念=接口

類內部只有函數聲明沒有實現,不能被實例化,只能被繼承並對虛方法進行全部實現才能實例化子類

純虛函數時實現抽象類的標準

  • 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)
{
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章