C++ Primer(第五版) 6.7节练习

C++ Primer(第五版) 6.7节练习

练习6.54:

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

练习6.55:

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

练习6.56:

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


代码:

/*<2017-1-5>Amusi: C++ primer  练习6.54  */
/*************************练习6.54*******************************/
/*说明:编写函数的声明,令其接受两个int形参并且返回值类型也是int;
		然后声明一个vector对象,令其元素是指向该函数的指针

int fun(int, int);	
typedef int(*p)(int, int);	//typedef关键
vector<p> fun_ptr;	
*/
/*************************练习6.55***********************************/
/*说明:编写4个函数,分别对两个int值进行加、减、乘、除运算;
		在上一题创建的vector对象中保存指向这些函数的指针。

int add(int i, int j)		//加法
{
	return i + j;
}

int subtract(int i, int j)	//减法
{
	return i - j;
}

int multiply(int i, int j)	//乘法
{
	return i*j;
}

int divide(int i, int j)	//除法
{
	if (!j)
	{
		cout << "除数为0,无意义!" << endl;
		return -1;
	}
	return i / j;
}

fun_ptr.push_back(add);
fun_ptr.push_back(subtract);
fun_ptr.push_back(multiply);
fun_ptr.push_back(divide);
*/
/*************************练习6.56***********************************/
/*说明:调用上述vector对象中的每个元素,并输出结果
*/
#include<iostream>
#include<vector>
using namespace std;

typedef int(*p)(int, int);	//typedef关键
vector<p> fun_ptr;
int add(int i, int j)		//加法
{
	return i + j;
}

int subtract(int i, int j)	//减法
{
	return i - j;
}

int multiply(int i, int j)	//乘法
{
	return i*j;
}

int divide(int i, int j)	//除法
{
	if (!j)
	{
		cout << "除数为0,无意义!" << endl;
		return -1;
	}
	return i / j;
}

int main()
{
	p p1 = add;
	p p2 = subtract;
	p p3 = multiply;
	p p4 = divide;

	fun_ptr.push_back(p1);
	fun_ptr.push_back(p2);
	fun_ptr.push_back(p3);
	fun_ptr.push_back(p4);

	cout << fun_ptr[0](9, 11) << endl;
	cout << fun_ptr[1](9, 11) << endl;
	cout << fun_ptr[2](9, 11) << endl;
	cout << fun_ptr[3](9, 11) << endl;

	system("pause");
	return 0;
}


发布了107 篇原创文章 · 获赞 190 · 访问量 46万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览