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

来源:互联网 发布:小动画制作软件 编辑:程序博客网 时间:2024/05/16 06:24


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;}


执行结果:


0 0
原创粉丝点击