《21天学通C++(第7版)》——12.7 问与答-阿里云开发者社区

开发者社区> 开发与运维> 正文

《21天学通C++(第7版)》——12.7 问与答

简介:

本节书摘来自异步社区出版社《21天学通C++(第7版)》一书中的第12章,第12.7节,作者: 【美】Siddhartha Rao, 【德】Nicolai M. Josuttis,更多章节内容可以访问云栖社区“异步社区”公众号查看。

12.7 问与答

21天学通C++(第7版)
问:我编写的类封装了一个动态整型数组,请问我至少应该实现哪些函数和方法?

答:编写这样的类时,必须明确定义下述情形下的行为:通过赋值直接复制对象或通过按值传递给函数间接复制对象。通常,应实现复制构造函数、复制赋值运算符和析构函数。另外,如果想改善这个类在某些情况下的性能,还应实现移动构造函数和移动赋值运算符。

问:假设有一个类对象object,而我希望支持语法cout << object;,请问需要实现哪个运算符?

答:您需要实现一个转换运算符,让类能被解读为std::cout支持的类型。一种解决方案是,像程序清单12.2那样定义运算符char* ()。

**问:自己编写智能指针类时,至少需要实现哪些函数和运算符?
**
答:智能指针必须能够像常规指针那样使用,如pSmartPtr或pSmartPtr->Func()。为此,需要实现运算符和->。要确保它足够智能,还需合理地编写析构函数,以自动释放/归还资源;另外,还需实现复制构造函数和复制赋值运算符,以明确定义复制和赋值的方式(也可将复制构造函数和复制赋值运算符声明为私有的,以禁止复制和赋值)。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章