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



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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值