练习6.54:编写函数的声明,令其接收两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。
练习 6.55:编写4个函数,分别对两个int值执行加、减、乘、除运算;在上一题创建的vector对象中保存这些函数的指针。
练习 6.56:调用上述vector对象的每个元素并输出其结果。
答:见云盘程序练习6.54-55-56.cpp。
练习6.4-55-56.cpp
/*
*练习6.54-55-56
*2015/6/15
*问题描述:
*练习6.54:编写函数的声明,令其接收两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。
*
*练习 6.55:编写4个函数,分别对两个int值执行加、减、乘、除运算;在上一题创建的vector对象中保存这些函数的指针。
*
*练习 6.56:调用上述vector对象的每个元素并输出其结果。
*
*功能:完成上述练习
*作者:Nick Feng
*邮箱:nickgreen23@163.com
*
*/
#include <iostream>
#include <vector>
using namespace std;
/*********练习6.54:编写函数的声明,令其接收两个int形参并且返回类型也是int;然后声明一个vector对象,令其元素是指向该函数的指针。****/
int calc(int, int);
typedef int (*pc)(int, int);
vector<pc> vec;
/*********练习 6.55:编写4个函数,分别对两个int值执行加、减、乘、除运算;在上一题创建的vector对象中保存这些函数的指针。****/
int Add(int a, int b)
{
return a + b;
}
int Sub(int a, int b)
{
return a - b;
}
int Multiply(int a, int b)
{
return a * b;
}
int Divide(int a, int b)
{
if (b != 0)
return a / b;
}
int main()
{
/****练习 6.56:调用上述vector对象的每个元素并输出其结果。*******/
int x(1), y(1);
pc p1 = Add;
pc p2 = Sub;
pc p3 = Multiply;
pc p4 = Divide;
vec.push_back(p1);
vec.push_back(p2);
vec.push_back(p3);
vec.push_back(p4);
for (auto i = 0; i != vec.size(); ++i)
cout << "The reult is:" << (vec[i])(x, y) << endl;
return 0;
}