您的位置:首页 > 编程语言 > C语言/C++

C++ primer(第五版) 练习 6.56 个人 code

2014-08-09 22:57 549 查看

C++ primer(第五版) 练习 6.56

题目:调用上述vector对象(练习 6.55中的)中的每个元素并输出其结果。

答:

第一次把函数声明跟定义写在了不同的文件,发现貌似跟书上讲的不太一样啊???

定义函数体的文件里面没有 #include 声明函数的文件,就可以编译,#include 了反而就重复声明了……

mypractice.h

/*

mypractice.h

编写函数声明,令其接受两个int形参并且返回类型也是int;
然后声明一个vector对象,令其元素是指向该函数的指针。

编写4个函数,分别对两个int值执行加、减、乘、除运算;在上一题
创建的vector对象中保存指向这些函数的指针。

*/
#include <vector>

using std::vector;

using pFunc= int (*)(int x, int y);
vector<pFunc> iVal;

int m_add(int a, int b);
int m_dec(int a, int b);
int m_mul(int a, int b);
int m_div(int a, int b);


mypractice.cpp 貌似这个文件该 #include "mypractice.h" 的吧?

/*
mypractice.cpp

定义
int m_add(int a, int b);
int m_dec(int a, int b);
int m_mul(int a, int b);
int m_div(int a, int b);

*/
int m_add(int a, int b)
{
return a + b;
}
int m_dec(int a, int b)
{
return a - b;
}
int m_mul(int a, int b)
{
return a*b;
}
int m_div(int a, int b)
{
return a / b;
}


/*
mymain.cpp

调用上述vector对象中的每个元素并输出其结果。

*/

#include <iostream>
#include "mypractice.h"

using std::cout;
using std::endl;

int main()
{
int v1 = 6, v2 = 3;
iVal.push_back(m_add);
iVal.push_back(m_dec);
iVal.push_back(m_mul);
iVal.push_back(m_div);

for (auto a : iVal)
cout << a(v1, v2) << endl;

return 0;
}


执行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: