函数指针
#include <iostream>
#include "Cal.h"
using namespace std;
int main()
{ double (*prtCC)(double, double);
double num1, num2;
char op;
cout << "please input 2 num: ";
cin >> num1 >> num2;
cout << "input opration:";
cin >> op;
switch (op)
{
case '+':
prtCC = adde;
break;
case '-':
prtCC = minuss;
break;
case '*':
prtCC = multi;
break;
case '/':
prtCC = divide;
break;
default:
cout << "quit " << endl;
break;
}
print_result(prtCC, num1, num2);
return 0;
}
Cal.h 头文件
#ifndef P79_CAL_H
#define P79_CAL_H
#include <iostream>
using namespace std;
//add
double add(double, double);
//minus
double minus(double, double);
//mult
double multi(double, double);
//divide
double divide(double, double);
//print result
void print_result(double (*)(double, double), double, double);
void print_result(double (*prtcal)(double, double), double num1, double num2) //函数指针
{
double result = prtcal(num1, num2);
cout << "result is: " << result << endl;
}
double adde(double num1, double num2)
{
return num1 + num2;
}
double minuss(double num1, double num2)
{
return num1 - num2;
}
double multi(double num1, double num2)
{
return num1 * num2;
}
double divide(double num1, double num2)
{
if (num2 == 0)
{
cout << "error, num2 is 0" << endl;
return 0;
}
return num1 / num2;
}
#endif //P79_CAL_H