12.7 问与答
21天学通C++(第7版)
问:我编写的类封装了一个动态整型数组,请问我至少应该实现哪些函数和方法?
答:编写这样的类时,必须明确定义下述情形下的行为:通过赋值直接复制对象或通过按值传递给函数间接复制对象。通常,应实现复制构造函数、复制赋值运算符和析构函数。另外,如果想改善这个类在某些情况下的性能,还应实现移动构造函数和移动赋值运算符。
问:假设有一个类对象object,而我希望支持语法cout << object;,请问需要实现哪个运算符?
答:您需要实现一个转换运算符,让类能被解读为std::cout支持的类型。一种解决方案是,像程序清单12.2那样定义运算符char* ()。
**问:自己编写智能指针类时,至少需要实现哪些函数和运算符?
**
答:智能指针必须能够像常规指针那样使用,如pSmartPtr或pSmartPtr->Func()。为此,需要实现运算符和->。要确保它足够智能,还需合理地编写析构函数,以自动释放/归还资源;另外,还需实现复制构造函数和复制赋值运算符,以明确定义复制和赋值的方式(也可将复制构造函数和复制赋值运算符声明为私有的,以禁止复制和赋值)。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
时间: 2024-10-07 00:19:11