创作不易,动动你的小手,点点关注!
多态的优点
- 代码组织结构清晰
- 可读性强
- 利于前期和后期的扩展以及维护
计算机示例代码
.cpp文件
// 多态学习.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
using namespace std;
#include"calculator.h"
int main()
{
const int size = 4;
calculator* Calculator[size];
Calculator[0] = new calculator(10, 20);
Calculator[1] = new subcalculator(10,20);
Calculator[2] = new mulcalculator(10, 20);
Calculator[3] = new divcalculator(10, 20);
for (calculator*pa : Calculator)
{
cout << pa->getresult() << endl;
}
for (calculator* pa : Calculator)
{
delete pa;
}
}
头文件
#pragma once
class calculator
{
public:
calculator(int num1,int num2);
virtual int getresult();
protected:
int m_num1;
int m_num2;
};
class addcalculator ://加法
public calculator
{
public:
addcalculator(int num1, int num2);
int getresult();
};
class subcalculator ://减法
public calculator
{
public:
subcalculator(int num1, int num2);
int getresult();
};
class mulcalculator ://乘法
public calculator
{
public:
mulcalculator(int num1, int num2);
int getresult();
};
class divcalculator ://除法
public calculator
{
public:
divcalculator(int num1, int num2);
int getresult();
};
类内成员类外初始化.cpp
#include "calculator.h"
#include <iostream>
using namespace std;
addcalculator::addcalculator(int num1, int num2):calculator(num1,num2)
{
}
int addcalculator::getresult()
{
return (m_num1 + m_num2);
}
//int calculator::getnum1()
//{
// return num1;
//}
//
//int calculator::getnum2()
//{
// return num2;
//}
calculator::calculator(int num1, int num2):m_num1(num1),m_num2(num2)
{
}
int calculator::getresult()
{
return 0;
}
subcalculator::subcalculator(int num1, int num2):calculator(num1,num2)
{
}
int subcalculator::getresult()
{
return m_num1-m_num2;
}
mulcalculator::mulcalculator(int num1, int num2):calculator(num1,num2)
{
}
int mulcalculator::getresult()
{
return m_num1*m_num2;
}
divcalculator::divcalculator(int num1, int num2):calculator(num1,num2)
{
}
int divcalculator::getresult()
{
if (m_num2 == 0)
{
cout << "this operator is illegal!" << endl;
return 0;
}
else
{
return m_num1 / m_num2;
}
}