Effective C++读书笔记(13)

发布时间:2017-3-27 6:52:31 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Effective C++读书笔记(13)",主要涉及到Effective C++读书笔记(13)方面的内容,对于Effective C++读书笔记(13)感兴趣的同学可以参考一下。

条款19:设计class犹如设计type class的设计规范:1、新type的对象应该如何被创建和销毁?2、对象的初始化和对象的赋值该有什么样的区别?3、新type的对象如果被passed by value,意味着什么?(copy构造函数)4、什么是新type的“合法值”?5、你的新type需要配合某个继承图系么?6、你的新type需要什么样的转换?7、什么样的操作符和函数对此新type而言是合理的?8、什么样的标准函数应该驳回?9、谁该取用新type的成员?10、什么是新type的“未声明接口”?11、你的新type有多么一般化?12、你真的需要一个新type么? 条款20:宁以pass-by-reference-to-const替换pass-by-value 缺省情况下c++以by value方式传递对象至函数,它们都是以实际实参的复件为初值,由对象的copy构造函数产出。(参数传递成本是一次copy构造函数和一次析构函数) 应采用pass by reference to const,原因如下:1、这种传递方式的效率高很多:没有任何构造函数或析构函数调用,将其设为const保护实参对象的值不被改变。2、可以避免slicing(对象切割)问题。当一个derived class对象以by value方式传递并被视为一个base class对象时,base class的copy构造函数被调用,而造成仅留下base class对象,而以pass by reference to const传递时,传进来的实参是什么类型就表现什么类型。 pass by reference往往是传递的对象的指针。因此,如果形参是内置类型,STL的迭代器或函数对象时仍采用pass by value更高效,因为习惯上它们都被设计为passed by value,而程序员有责任看看它们是否高效且不受切割问题的影响。 一般而言,你可以合理假设“pass-by-value并不昂贵”的唯一对象就是内置类型、STL的迭代器和函数对象。至于其他任何东西都尽量用pass by reference to const 代替 pass by value。 函数对象:是重载了“()”操作符的普通类对象。 class Add { public: int operator()(int a, int b) { return a + b; } }; 用函数对象代替函数指针有以下几个优点:1、因为对象可以在内部修改而不用改变外部接口,因此设计更加灵活,更富有弹性。函数对象也具备有存储先前调用结果的数据成员。2、在函数对象中编译器能实现内联调用。3、函数对象还可以应用模版。

上一篇:android中TextView内容显示过长,省略内容问题
下一篇:Connection reset by peer的常见原因

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款