C++为什么尽量避免定义默认操作

本篇内容介绍了“C++为什么尽量避免定义默认操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联网络公司拥有十年的成都网站开发建设经验,上千多家客户的共同信赖。提供成都网站制作、做网站、外贸营销网站建设、网站开发、网站定制、买友情链接、建网站、网站搭建、响应式网站开发、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务

C.20: 尽可能避免定义默认操作

译者注:默认操作是指析构,复制/移动构造,复制移动赋值运算符等默认情况下编译器会自动生成的那些操作。

Reason(原因)

It's the simplest and gives the cleanest semantics.

这要做最简单而且提供最干净的语义。

Example(示例)

struct Named_map {public:    // ... no default operations declared ...private:    string name;    map rep;};
Named_map nm;        // default constructNamed_map nm2 {nm};  // copy construct

Since std::map and string have all the special functions, no further work is needed.

尽管std::map和string具有所有的特殊函数,但是在段代码中不需要这部分功能。

Note(注意)

This is known as "the rule of zero".

这就是总所周知的"0默认操作规则"

Enforcement(实施建议)

(非强制)虽然规则本身不是强制的,但是好的静态分析程序应该可以发现某种可以对代码进行改进以满足本准则的方法。例如,某个类包含(指针,大小)组合成员和释放指针的析构函数,那么它可能被转换为某种vector。

“C++为什么尽量避免定义默认操作”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


文章标题:C++为什么尽量避免定义默认操作
转载注明:http://scyanting.com/article/ipdedj.html