08 2022 档案
摘要:练习16.17 ::没有,当表示为一种类型的时候用typename 练习16.18 (a)违法,每个模板参数都要有一个typename或者class (b)非法,模板参数名为掩盖 (c)inline要写在返回类型前 (d)合法 (e)非法,这命名冲突 练习16.19 template<typenam
阅读全文
摘要:练习16.1 ::实例化就是模板通过实际调用而确定类型及其运算,抽象到具体 练习16.2 template <typename T> int compare(const T& v1,const T& v2) { if(v1<v2)return -1; if(v2<v1)return 1; retur
阅读全文
摘要:练习15.15 重新定义Bulk_quote class Disc_quote:public Quote{ public: Disc_quote()=default; Disc_quote(const std::string& book,double p,std::size_t qty,double
阅读全文
摘要:练习15.1 什么是虚成员? ::需要派生类自己定义的成员 练习15.2 protected访问说明符与private有何区别? ::protected允许派生类访问,private一律不允许访问 练习15.3 定义你自己的Quote类和print_total函数 class Quote{ publ
阅读全文
摘要:练习14.44 编写一个简单的桌面计算器使其处理二元计算 double add(double a,double b) { return a+b; } auto subtra=[](double a,double b){return a-b; }; struct multi{ double opera
阅读全文
摘要:练习14.26 为你的String类定义下标运算符 char& operator[](size_t d) { return elements[d]; } const char& operator[](size_t d)const { return elements[d]; } 练习14.27 为你的
阅读全文
摘要:练习14.10 对于Sales_data的输入运算符来说给定下面的输入会发生什么? (a)0-201-99999-9 10 24.95正常输入 (b)10 24.95 0-210-99999-9最后一个输入格式错误,会chongz 练习14.11 下面的Sales_data输入运算符存在错误吗?如果
阅读全文
摘要:练习14.1 在什么时候情况下重载的运算符与内置运算符有所区别?在什么时候重载的运算符又与内置运算符一样 ::为类设计的运算符,尽量重载的运算符含义不要改变,如+还是加法 练习14.2 为Sales_data编写重载的输入,输出,加法和复合赋值运算符 std::istream& operator>>
阅读全文
摘要:练习13.55 为你的StrBlob添加一个右值引用版本的Push_back void StrBlob::push_back(string&&s){data->push_back(std::move(s));} 练习13.56 如果sorted定义如下,会发生什么 Foo Foo::sorted()
阅读全文
摘要:练习13.49 为你的String类添加一个移动构造函数和一个移动赋值运算符 String(String&& a):elements(std::move(a.elements)),first_free(std::move(a.first_free)),cap(std::move(a.cap)){ a
阅读全文
摘要:练习13.41 在push_back中我们为什么在construct调用后置递增 ::因为first_free指针就是第一个空闲位置,使用前置每次插入都会隔一个位置 练习13.42 在你的textQuery和Queryresult类中用strvec代替vector<string>进行测试 ::用St
阅读全文
摘要:练习13.22 假定我们希望HasPtr的行为像一个值。即,对于对象所指向的string成员,每个对象都有一份自己的拷贝。编写拷贝构造函数,拷贝赋值函数 class HasPtr{ public:: HasPtr(HasPtr&b):ptr(new std::string(*b.ptr)),cur(
阅读全文
摘要:练习13.1 拷贝构造函数是什么?什么时候使用它? ::可以将其理解成对复制已有的去创造新的这个过程的定义,在拷贝初始化和函数返回和参数(不为引用的时候)出现比较频繁,为了不必区分直接初始化和拷贝初始化,拷贝构造函数的参数最好是const的引用,引用很重要,毕竟在定义拷贝构造的参数时,要调用自身会陷
阅读全文
摘要:练习12.33 为QueryResult类添加begin和end成员,返回lines的指定位置,再添加get_file成员,返回成员file的shared_ptr指针 #ifndef QUERYRESULT #define QUERYRESULT #include <string> #include
阅读全文
摘要:练习12.27 TextQuery和QueryResult类只使用了我们已经介绍过的语言和标准库特性。 main.cpp #include<iostream> #include <string> #include <vector> #include <fstream> #include "Query
阅读全文
摘要:练习12.23 编写一个程序,连接两个字符串字面常量,将结果保存在一个动态分配的char数组里。重写这个程序,连接两个标准库string对象。 int main() { char a[10]="beautyday"; char b[5]="yeah"; char *p=new char[15]; s
阅读全文
摘要:猝不及防的编译错误,压根没想过有这么一回事,好吧,还是知识太浅薄 那究竟是什么原因造成模板函数不能放在cpp文件里定义呢? 这得从编码到运行探究,先看预编译是将预编译宏命令进行处理,编译是将文本中的源码转换成计算机能直接处理的汇编语言,C++采用的是分离式编译:: c++开发中广泛使用声明和实现分开
阅读全文
摘要:练习12.19 定义你自己的StrBlobPtr,更新StrBlob类,加入恰当的friend声明及begin、end成员 class StrBlobPtr{ public: StrBlobPtr():curr(0){} StrBlobPtr(StrBlob&a,size_t sz):wptr(a.
阅读全文
摘要:练习12.1 在此代码的结尾,b1和b2各包含多少个元素? strblob b1; {strblob b2={“a”,“an”,“the”}; b1=b2; b2.push_back(“about”);} ::各包含4个 练习12.2 编写你自己的strblob类,包含const版本的front和b
阅读全文