C++ primer 第五版 第三部分 部分习题答案(暂停更新....)
来源:互联网 发布:传奇手游被动技能 数据 编辑:程序博客网 时间:2024/05/16 15:05
13.1
就是新建一个同类型的对象,并且用引用的对象来初始化新对象的值。不希望改变原对象的值,但是又需要用到并且会修改这些值得时候使用拷贝。
13.2
因为它的拷贝构造函数里面用的不是引用,这样当它调用拷贝构造函数的时候,永远得不到实参。
13.4
全部都是拷贝。
13.5 13.8
class HasPtr{public:HasPtr(const std::string &s = std::string()) :ps(new std::string(s)), i(0){}HasPtr(const HasPtr&);HasPtr& operator=(const HasPtr&);protected:private:std::string *ps;int i;};HasPtr::HasPtr(const HasPtr& orig) :ps(new string(*(orig.ps))), i(orig.i){}HasPtr& HasPtr::operator=(const HasPtr &rhs){ps = new string(*(rhs.ps));i = rhs.i;}
13.13
#include <cstdlib>#include <iostream>#include <string>#include <vector>using namespace std;struct MyStruct{MyStruct(){ cout << "MyStruct()" << endl; }MyStruct(const MyStruct&){ cout << "MyStruct(const MyStruct&)" << endl; }};void test1(MyStruct & m){}void test2(MyStruct m){}int main(int argc, char *argv[]){MyStruct m;MyStruct c = m;cout << "1:" << endl;test1(m);cout << "1.1:" << endl;test2(m);cout << "2:" << endl;auto p = new MyStruct();cout << "3:" << endl;vector<MyStruct> v;v.push_back(m);system("PAUSE");return 0;}
13.14
输出都一样的值,因为除了a之外,其他的对象都是调用的合成拷贝构造函数。
13.15
当然会,理由参见13.14.
13.16
不会因为调用的是引用都不走构造函数了。参见13.13结果。
13.18
#include <cstdlib>#include <iostream>#include <string>#include <vector>using namespace std;struct Employee{Employee(string n);Employee(const Employee&) = default;void printName();string name;static int num;};int Employee::num = 0;void Employee::printName(){cout << name << endl;}Employee::Employee(string n) :name(n){this->num++;cout << name <<"'s Number is "<< num << endl;}/*Employee::Employee(const Employee& e) : name(e.name){cout << "&" << name << "'s Number is " << num << endl;}*/int main(int argc, char *argv[]){Employee a("hello"), b = a;cout << &a <<"##"<< &b << endl;b.name = "cccc";a.printName(); b.printName();system("PAUSE");return 0;}
13.19
需要定义拷贝控制成员,因为每次拷贝,雇员的编号都要重新生成一次。
13.22
同13.5.
13.23
HasPtr和书上代码有差异,书上代码更完美,我的代码有很多缺陷。
13.29
不会导致递归,因为HasPtr的swap内部,调用的是,string和int的swap而不是自身的swap。
0 0
- C++ primer 第五版 第三部分 部分习题答案(暂停更新....)
- C++Primer第五版 第一章习题答案(部分)
- C++ primer 第五版 第一部分 部分习题答案
- C++ primer 第五版 第二部分 部分习题答案
- C++Primer 中文版 第五版 第三章课后习题答案
- C++primer第五版第八章部分习题解答
- C++Primer(第五版) 习题答案
- C++Primer 第五版 (课本习题答案)
- C primer plus课后习题答案(部分)
- C++primer(第五版)第五章总结(含部分习题源代码及解析)语句
- C++Primer 中文版 第五版 第五章课后习题答案
- C++Primer第五版 第三章习题答案(1~10)
- C++Primer第五版 第三章习题答案(11~20)
- C++Primer第五版 第三章习题答案(21~30)
- C++Primer第五版 第三章习题答案(31~40)
- C++Primer第五版 第三章习题答案(41~45)
- c++primer部分练习题答案
- C++ Primer 第五版 部分课后题答案
- 二进制转换
- android应用程序如何调用支付宝接口
- [iOS_Dev] iOS simulators(5.0to8.0) on Xcode5.1 & SDK7.1 on Xcode6
- java Object class分析
- .net 大文件分页读取示例(seek,read)
- C++ primer 第五版 第三部分 部分习题答案(暂停更新....)
- PageRank背后的数学
- java生成指定范围的随机数
- HDU5122 K.Bro Sorting 【树状数组】
- 关于AlertDialog的使用
- 线性表(三)
- hadoop、hbase安装注意事项
- for()循环里面定义变量
- Android 动画效果 --Animation 动画(讲解了所有的Android动画效果,是一个值得收藏的帖子)