
C++Prime答案
猪二哥
这个作者很懒,什么都没留下…
展开
-
C++Prime 第十九章 最后一章
C++Prime 第十九章练习19.1void* operator new(size_t size){ if (void* mem = malloc(size)) return mem; else throw bad_alloc();}void operator delete(void* mem)noexcept{ free(mem);}练习19.2略练习19.3(a) 失败,基类不可向派生类转化(b) 成功© 成功存疑.练习19.4略练习19.5并非任原创 2020-07-12 23:36:47 · 218 阅读 · 0 评论 -
C++Prime 第十八章
C++Prime 第十八章练习18.1(a) r是一个range_error类型对象(b) p是exception练习18.2v被摧毁,p指针销毁,但是所指内存没有得到释放,in自动调用析构函数.未找到catch,系统调用terminate函数,程序终结.练习18.3方案一:对p使用智能指针,补充try-catch语句方案二:p改为全局对象练习18.4exception是基类,runtime_error也是overflow_error的基类,基类的捕获语句应该放在后面 try {原创 2020-07-12 14:44:53 · 185 阅读 · 0 评论 -
C++ Prime第十七章
C++ Prime第十七章练习17.1 tuple<int, double, long> t(10, 20, 30); tuple<size_t, size_t, int> t2{10,20,30}; tuple<int, long, double> t3; t3 = make_tuple(10, 20, 30);练习17.2tuple<string, vector<string>, pair<string, int>>原创 2020-07-11 21:37:57 · 234 阅读 · 0 评论 -
C++Prime第十六章 后36题
C++Prime第十六章 后36题练习16.32编译器使用函数调用中的实参类型来寻找模板实参,用这些模板实参生成的函数版本与给定的函数调用最为匹配.练习16.33模板实参会忽略顶层const,同时允许const转换一级数组或函数到指针的转换.练习16.34(a)不合法,T的类型分别时const char [3],const char [6],(b)同理,b合法.练习16.35(a)T为char,第二个参数是’c’的ascII(b)T为double,第二个参数执行缩招转换,float-&g原创 2020-07-10 18:13:39 · 170 阅读 · 0 评论 -
C++Prime第十六章 前31题
C++Prime第十六章 前30题练习16.1编译器使用推断出的模板参数代替对应的模板参数,常见出模板的一个实例,这就是实例化.练习16.2template<typename T>int compare(const T& t1, const T& t2) { if (t1 < t2) return -1; if (t2 < t1) return 1; return 0;}int main(){ cout << compare(1,原创 2020-07-09 17:24:08 · 221 阅读 · 0 评论 -
C++Prime 第十五章
C++Prime 第十五章练习15.1虚成员:基类希望派生类覆盖的成员函数.任何构造函数之外的非静态函数都可以是虚函数.练习15.2protected: 允许派生类访问private:不允许练习15.3#pragma once#include <iostream>#include <vector>using namespace std;class Quote{public: Quote() = default; Quote(const string&am原创 2020-07-08 15:51:35 · 270 阅读 · 0 评论 -
C++Prime 第14章后23题
C++Prime 第14章后23题练习14.31智能指针或内置类型,可以自己管理自己拥有的资源,于是使用编译器合成的拷贝控制函数就满足要求了.练习14.32class X{public: string* operator->() { return ptr->operator->(); };private: StrBlobPtr* ptr;};练习14.33重载的函数调用运算符最少接受0个对象,最多接受无限个对象.练习14.34#pragma once#inc原创 2020-07-05 15:17:58 · 158 阅读 · 0 评论 -
C++Prime 第14章 前30题
C++Prime 第14章 前30题练习14.1重载运算符与内置运算符:区别:1)某些运算对象的求值规则无法在重载运算符中保存下来.比如&&和||的短路求值特性被舍弃.2)重载运算符必须要求至少有一个成员是class类型相同:1)一般来说,优先级,结合律和操作数的数目是一致的.2)一般来说,表达的逻辑是相同的.练习14.2 friend std::istream& operator>>(std::istream& is, Sales_data&原创 2020-07-04 16:55:39 · 185 阅读 · 0 评论 -
C++Prime 第十三章 后28题
C++Prime 第十三章 后28题练习13.31不知道为啥我的就是不调用swap,代码如下.头文件:#pragma once#include <iostream>using std::string;class HasPtr{public: HasPtr(const HasPtr&); HasPtr(const std::string& s = string()) :ps(new string(s)), i(0) {} HasPtr& operat原创 2020-07-04 12:54:03 · 224 阅读 · 0 评论 -
C++Prime 第十三章 前30题
C++Prime 第十三章 前30题练习13.1拷贝构造函数:通过拷贝对象的方式创建一个新对象.满足以下条件:本身是构造函数,第一个参数必定是自身类类型的引用,且任何额外参数都有默认值.使用:"=";函数非引用形参;非引用返回值;用花括号初始化一个数组中的元素或者一个聚合类中的成员;某些类类型会对他们所分配的对象使用拷贝初始化.练习13.2拷贝构造函数第一个参数必须是对自身类类型的引用,不然会陷入无限的递归调用中.本题,如定义Sales_data a = b;则相当于 a.Sales_data原创 2020-07-02 22:05:27 · 166 阅读 · 0 评论 -
C++Prime 第十二章
C++Prime 第十二章练习12.1b2被销毁,其中元素未被销毁,b1和b2包含4个元素.练习12.2class StrBlob{ typedef std::vector<std::string>::size_type size_type; StrBlob(); StrBlob(std::initializer_list < std::string> il); size_type size() const { return data->size(); }原创 2020-07-01 21:47:13 · 215 阅读 · 0 评论 -
C++Prime 第十一章
C++Prime 第十一章练习11.1map以关键字来存储和访问,vector以元素在容器中的位置来存储和访问.练习11.2list: 插入&删除,如链表中间插入一个数据vector: 随机访问,deque: 头尾插删,map: 关键字存储,如字典set:关键字的集合.如判断一个元素是否在集合中出现过练习11.3 map<string, size_t> word_count; string word; while (cin >>原创 2020-06-28 16:22:16 · 318 阅读 · 1 评论 -
C++ Prime第十章
C++ Prime第十章练习10.1int main(){ vector<int> data; int num, sum = 0; while (cin >> num) data.push_back(num); cout << "输入一个要查找的值: " << endl; int val; cin.clear(); cin >> val; sum = count(data.begin(), data.end(), v原创 2020-06-27 22:43:36 · 215 阅读 · 0 评论 -
C++Prime 第九章后22题
C++Prime 第九章后22题练习9.31原创 2020-06-25 15:15:18 · 215 阅读 · 0 评论 -
C++Prime 第九章前30题
C++Prime 第九章前30题练习9.1(a)选择list,因为可能在容器中间插入元素.也可以选择vector,全部读取完毕后,直接sort.(b)选择deque,因为插入删除操作只在头部进行.(c)选择vector.练习9.2 list<deque<int> > data;练习9.3迭代器范围:两个迭代器指向同一容器,或者是容器最后一个元素之后的位置,begin递增若干次后等于end.练习9.4#include <iostrea.原创 2020-06-22 16:58:46 · 169 阅读 · 0 评论 -
C++Prime 第八章
C++Prime第八章练习8.1 练习8.2#include <iostream>#include <sstream>#include <fstream>using namespace std;istream& print(istream& is){ string word; while (is>>word) { cout << word<<endl; } is.clear();..原创 2020-06-21 12:21:40 · 401 阅读 · 0 评论 -
C++Prime 第七章后28题
C++Prime 第七章后28题练习7.31class Y;class X { Y* y; };class Y { X x; };练习7.32重点在于友元成员函数的实现,如下:class Window_mgr //第一步,首先定义Window_mgr类{public: using ScreenIndex = std::vector<int>::size_type; void clear(ScreenIndex i);//第二步,声明clear函数,但不定义.(原创 2020-06-20 09:11:43 · 254 阅读 · 0 评论 -
C++Prime 第七章前30题
C++Prime 第七章前30题练习7.1书上代码照着敲就行.练习7.2#include <iostream>#include "Sales_data.h"using namespace std;int main(){ Sales_data total; if (cin >> total) { Sales_data trans; while (cin >> trans) { if (total.isbn() == tran原创 2020-06-18 18:17:30 · 260 阅读 · 1 评论 -
C++Prime 第六章 后36题
C++Prime 第六章 后36题练习6.31返回对局部变量的引用无效.常量如果是在函数中,那么其实它也是局部的,同上.练习6.32合法滴,将指定数组元素修改为0 - 10.练习6.33#include <iostream>#include <vector>using namespace std;void print(vector<int> vi,int n){ if (n == vi.size()) return; cou原创 2020-06-14 22:37:05 · 137 阅读 · 0 评论 -
C++Prime 第六章 前30题
C++Prime 第六章 前30题练习6.1实参和形参的区别: 实参是实际提供给函数的参数,实参是形参的初始化值,练习6.2(a) 返回类型不符(b)无返回类型(c)形参不能重名(d)函数体必须用括号括起来练习6.3 练习6.4(稍微一改就行)#include <iostream>using namespace std;long long fact(int n){ if (n == 1) return 1; return n * fact(n原创 2020-06-14 15:47:16 · 186 阅读 · 0 评论 -
C++Prime 第五章
C++Prime 第五章练习5.1以分号结尾成为空语句,语法上需要一条语句,逻辑上不需要时.练习5.2用花括号括起来的语句语句,可以为空,称为复合语句,或者块.语法上需要一条语句,逻辑上需要多条语句时.练习5.3 略练习5.4(a) while(string::iterator iter != s.end()) //iter未初始化直接用,while判断语句里不允许定义变量(for可以,while不可以!!!)(b) while(bool status = find(wor.原创 2020-06-12 17:47:44 · 184 阅读 · 0 评论 -
C++Prime第四章
C++Prime第四章练习题,自己做的答案,不对之处恳请批评指正。练习4.1结果是:105练习4.2(a) *vec.begin() == *(vec.begin())(b) *vec.begin() + 1 == *(vec.begin()) + 1练习4.3不可接受。有些错误隐蔽不好发现。练习4.4( ( ((12 / 3) * 4 ) + (5 * 15) ) + ( (24 % 4) / 2) ) = 91#include <io...原创 2020-06-12 11:33:38 · 256 阅读 · 0 评论 -
C++Prime第三章
C++Prime第三章练习3.1using namespace std; 和 using std::cin; 和 std::cout<<""<<std::endl; 三种形式选择就行。练习3.2#include <iostream>#include <string>using namespace std;int main(){ string line; while (getline(cin, line)) cout <&原创 2020-06-04 20:46:56 · 246 阅读 · 0 评论 -
C++Prime 第二章
第二章练习2.11. 区别是所占字节数可能不同,也就是在机器中存储的位数不同2. 带符号类型和无符号类型本质是对字节的解释方式不同,表现形式为带符号类型可以有负值,且正值最大值减半。3. 精度不同,代价不同。float精度低,相应的运算快。练习2.2略练习2.3、2.4#include<iostream>using namespace std;int main(){ unsigned u = 10, u2 = 42; cout << u原创 2020-06-03 17:34:33 · 330 阅读 · 0 评论 -
C++Prime 第一章
C++Prime第一章练习1.9#include<iostream>using namespace std;int main(){ int i = 50; int sum = 0; while (i <= 100) sum += i++; cout << sum << endl; return 0;}练习1.10#include<iostream>using namespace std;int main(){ i原创 2020-06-01 13:41:43 · 213 阅读 · 0 评论