C++primer 6.7节练习

练习6.54

1 int fun(int, int);
2 typedef int (*pf) (int, int);
3 vector<pf> a;
 1 int funAdd(int i, int j)
 2 {
 3     return i + j;
 4 }
 5 int funDel(int i, int j)
 6 {
 7     return i - j;
 8 }
 9 int funMul(int i, int j)
10 {
11     return i * j;
12 }
13 int funDiv(int i, int j)
14 {
15     return i / j;
16 }
17
18
19 int main()
20 {
21     typedef int (*pf) (int, int);
22     vector<pf> a(2);
23     a[0] = funAdd;
24     a[1] = funDel;
25     a[2] = funMul;
26     a[3] = funDiv;
27     cout << a[0](1, 2) << endl;
28     cout << a[1](8, 3) << endl;
29     system("pause");
30     return 0;
31 }

练习6.56

 1 #include <cstring>
 2 #include <vector>
 3 #include <stdexcept>
 4 #include "factmain.h"
 5 using namespace std;
 6
 7 int funAdd(int i, int j)
 8 {
 9     return i + j;
10 }
11 int funDel(int i, int j)
12 {
13     return i - j;
14 }
15 int funMul(int i, int j)
16 {
17     return i * j;
18 }
19 int funDiv(int i, int j)
20 {
21     return i / j;
22 }
23
24
25 int main()
26 {
27     typedef int (*pf) (int, int);
28     vector<pf> a(4);
29     a[0] = funAdd;
30     a[1] = funDel;
31     a[2] = funMul;
32     a[3] = funDiv;
33     cout << a[0](1, 2) << endl;
34     cout << a[1](8, 3) << endl;
35     cout << a[2](2, 3) << endl;
36     cout << a[3](144, 12) << endl;
37     system("pause");
38     return 0;
39 }
时间: 2024-11-08 00:07:29

C++primer 6.7节练习的相关文章

C++primer 15.3节练习

练习15.11 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() = default; 12 Quote(const string &book, doubl

C++primer 15.8节练习

练习15.28 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() : bookNo(""), price(0.0) { cout <<

C++primer 15.4节练习

练习15.15.练习15.16 1 #include <iostream> 2 #include <string> 3 #include <utility> 4 #include <memory> 5 #include <vector> 6 7 using namespace std; 8 9 class Quote { 10 public: 11 Quote() = default; 12 Quote(const string &boo

c++ primer 4.6节练习答案

练习4.20 a) 合法,解引用iter,先输出iter所指向的对象的值,再把iter所指的位置向前移动一: b) 不合法,*iter得到的是一个字符串,字符串不能自增: c)不合法,解引用的优先级低于点运算符,故empty()函数先与iter结合,iter是一个指向对象的指针,他是没有empty()函数的,应该是(*iter).empty(); d)合法,输出跟上面一题一样的值 e)合法,等价于++(*iter) f)合法,等价于((iter++)).empty().返回(iter).empt

C++primer 15.5节练习

练习15.18 只有当派生类公有继承基类时,用户代码才能使用派生类向基类的转换:B &tb=D; Base *p=&d1; 正确,Pub_Derv是公有继承Base p=&d2; 错误,Priv_Derv是私有继承Base p=&d3; 错误,Prot_Dery是保护继承Base p=&dd1; 正确,Derived_from_Public是公有继承于Pub_Dery的 p=&dd2; 错误,Priv_Derv是私有继承于Base p=&dd3; 错

C++primer 15.6节练习

练习15.23 1 class Base { 2 public: 3 virtual int fcn(); 4 }; 5 6 class D1 : public Base { 7 public: 8 int fcn(); 9 virtual void f2(); 10 }; 11 12 class D2 : public D1 { 13 public: 14 int fcn(int); 15 int fcn(); 16 void f2(); 17 }; 18 跟bp2有关的需要重新解析:bp2-

C++primer 14.3节练习

练习14.13 对于Sales_data类来说,没有其他的算术运算符需要重载了,对于其它的运算没有意义: 练习14.14 首先operator+有两个参数,其参数类型为const,是不需要改变的,其返回类型为Sales_data类型的一个拷贝.不过每次都需要在函数体内定义一个临时变量,用来返回拷贝. 而operator+=有一个参数,其参数类型为const,不需要改变,其返回类型为Sales_data类型的引用.每次不需要在函数内创建临时变量,直接可返回*this. 如果用operator+来定

C++primer 13.2节练习

练习13.22 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using namespace std; 6 7 8 class HasPtr { 9 friend ostream &print(ostream &os, HasPtr &h); 10 public: 11 HasPtr(const string &s = string()) : ps(s)

C++primer 11.1节练习

练习11.1 map他是一个有序的且元素不重样的关联容器,他存放元素的方式是以键值对的方式存放的: vector容器没有什么特别的要求 练习11.2 list适用于在在任何地方添加删除元素,因为他是个双向的链表: vector适用于需要随机访问的程序,只能在尾后添加元素,在其他位置添加或删除元素效率会很低:代价过大 deque适用于在容器首尾添加删除元素且随机访问的程序: map是键值对的集合,他能在查找的同时进行高效的访问: set就是关键字的简单集合,适用于当只是想知道一个值是否存在时,是最

C++primer 7.2节练习

练习7.16 没有,一个类可以有0个或多个访问说明符,而且对于某个访问说明符能出现多少次也没有严格限定:定义在public说明符之后的应该是程序的接口,即是成员函数的一些声明,还有一些构造函数:定义在private后的应该是数据成员和某些成员函数的定义: 练习7.17 有,class和struct的区别在于两者默认的访问权限不同,class默认的访问权限是private,struct则相反: 练习7.18 封装的意义在于将一些成员函数的定义和数据成员隐藏起来,只留下接口供用户知晓,这样用户就可以