第十三章 13.1.2节练习
2014-09-09 15:57
162 查看
练习13.6
①拷贝赋值运算符是什么?
②什么时候使用它?
③合成拷贝赋值运算符完成什么工作?
④什么时候会生成拷贝赋值运算符?
解答:
①其实就是“=”运算,也就是赋值运算。
②右侧运算对象作为显示参数向左侧传递时时候。
③合成拷贝赋值运算符来禁止该类型对象的赋值。
④当一个类没有定义自己的拷贝赋值运算符的时候,编译器会为它自动生成一个合成拷贝赋值运算符。
练习13.7
当我们将一个StrBlob赋值给另一个StrBlob时,会发生什么?赋值StrBlobPtr呢?
解答:
将一个StrBlob赋值给另一个StrBlob这个操作是完全没有问题的。
当赋值StrBlobPtr的时候就会出错,在编译的时候就会报错,左右值的类型不一样(也不是继承关系),无法完成赋值。
练习13.8
为13.1.1节(第443页)练习13.5中的HasPtr类编写赋值运算符。类似拷贝构造函数,你的赋值运算符应该将对象拷贝到ps指向的位置。
解答:
①拷贝赋值运算符是什么?
②什么时候使用它?
③合成拷贝赋值运算符完成什么工作?
④什么时候会生成拷贝赋值运算符?
解答:
①其实就是“=”运算,也就是赋值运算。
②右侧运算对象作为显示参数向左侧传递时时候。
③合成拷贝赋值运算符来禁止该类型对象的赋值。
④当一个类没有定义自己的拷贝赋值运算符的时候,编译器会为它自动生成一个合成拷贝赋值运算符。
练习13.7
当我们将一个StrBlob赋值给另一个StrBlob时,会发生什么?赋值StrBlobPtr呢?
解答:
将一个StrBlob赋值给另一个StrBlob这个操作是完全没有问题的。
当赋值StrBlobPtr的时候就会出错,在编译的时候就会报错,左右值的类型不一样(也不是继承关系),无法完成赋值。
练习13.8
为13.1.1节(第443页)练习13.5中的HasPtr类编写赋值运算符。类似拷贝构造函数,你的赋值运算符应该将对象拷贝到ps指向的位置。
解答:
#include <iostream> #include <string> using namespace std; class HasPtr{ public: HasPtr(const string &s = string()):ps(new string(s)), i(0){} //HasPtr(const HasPtr& ori):ps(new string(*(ori.ps))), i(ori.i){}; HasPtr& operator=(const HasPtr& ori){ ps = new string(*(ori.ps)); i = ori.i; return *this; } //private: string *ps; int i; }; int main(){ HasPtr a("test string"); cout << a.ps << endl; cout << *(a.ps) << endl; HasPtr b; b = a; //HasPtr b(a); cout << b.ps << endl; cout << *(b.ps) << endl; }
相关文章推荐
- c primer plus第十三章编程练习答案(纯手打欢迎指错)
- 第十三章 带参方法 上机练习4 模拟账户查询,实现取款取款
- 《C与指针》第十三章练习
- 第十三章 13.1.1节练习
- 第十三章 13.1.4节练习
- 《Python核心编程》第二版第405页第十三章练习 续一 -Python核心编程答案-自己做的-
- 《Python核心编程》第二版第407页第十三章练习 续五 -Python核心编程答案-自己做的-
- C Primer Plus 第十三章 编程练习 1-13题
- 第十三章 13.1.3节练习
- 第十三章 13.2.1节练习
- 第十三章 编程练习
- 第十三章 13.3节练习
- 第十三章 13.6.1节练习
- python 核心编程2 第十三章练习
- C ++ Primer Plus 第六版 第十三章编程练习答案
- 第十三章 13.6.2节练习
- 《Python核心编程》第二版第405页第十三章练习 续二 -Python核心编程答案-自己做的-
- 第十三章 13.6.3节练习
- 《Python核心编程》第二版第407页第十三章练习 续四 -Python核心编程答案-自己做的-
- 《Erlang 程序设计》练习答案 -- 第十三章 并发程序中的错误