Effective C++读书笔记---宁以传递const引用替换值传递
来源:互联网 发布:绝对领域软件 编辑:程序博客网 时间:2024/05/29 14:46
你必须知道,函数参数以值传递的效率太低:
上面的例子以值传递参数,调用六次拷贝构造函数、六次析构函数,严重影响效率
值传递除了效率低以外,还存在参数切割的问题:
当已值传递基类类型时,派生类的对象会被切割为基类对象。而传递引用不会存在此问题。
注意:对于内置类型、STL迭代器、函数对象,传递值的效率比传递引用的效率要高。
注释:函数对象即一个重载了括号操作符“()”的对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。
class Person{ public: Person(); virtual ~Person(); private: std::string name; std::string address;}class Student:public Person{ public: Student(); ~Student(); private: std::string schoolName; std::string schoolAddress;}bool validateStudent(Student s);Student plato;validateStudent(plato);
上面的例子以值传递参数,调用六次拷贝构造函数、六次析构函数,严重影响效率
值传递除了效率低以外,还存在参数切割的问题:
当已值传递基类类型时,派生类的对象会被切割为基类对象。而传递引用不会存在此问题。
class Window{ public: std::string Name() const;}class WindowWithScroll:public Window{}void printNameAndDisplay(Window w){ std::cout<< w.name(); w.display(); //}
注意:对于内置类型、STL迭代器、函数对象,传递值的效率比传递引用的效率要高。
注释:函数对象即一个重载了括号操作符“()”的对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。
0 0
- Effective C++读书笔记---宁以传递const引用替换值传递
- 读书笔记《Effective C++》条款20:宁以pass-by-reference-to-const替换pass-by-value
- 宁以const引用传递代替按值传递(内置类型除外)
- 读书笔记《Effective C++》条款02:尽量以const,enum,inline替换#define
- C++之值传递、指针传递和引用传递---补充(4)《Effective C++》
- 值传递与传递const引用
- C 值传递、地址传递、引用传递
- [C]值传递、指针传递、引用传递
- Effective C++读书笔记:TIP21~宁以pass-by-reference-to-const替换pass-by-valuue
- Effective C++ 读书笔记 条款20:宁以pass-by-reference-to-const 替换 pass-by-value
- Effective C++读书笔记-----条款20:宁以pass-by-reference-to-const替换pass-by-value
- const用法、值传递、地址传递、引用传递
- effective C++(第三版)读书笔记一——条款二:尽量以const,enum,inline替换#define
- effective c++ 条款20(用const引用代替值传递)
- 《Effective C++》尽量以const,enum,inline,替换#define
- effective C++:尽量以const、enum、inline替换#define
- Effective C++:条款20:宁以 pass-by-reference-to-const替换pass-by-value
- C/C++值传递和引用传递
- 各大物联网平台对比之百度IoT云平台
- About HTTP Live Streaming官方文档翻译 [iOS]
- Java算法——一维数组的常见操作(遍历,求最大值,最小值,逆序,查找)
- JAVA学习路线图
- 小火山的计算能力
- Effective C++读书笔记---宁以传递const引用替换值传递
- push代码到github每次输入用户名和密码
- Android UI 控件--(multi)AutoCompleteTextView、查看原文件、修改颜色
- Surfaceview和view的区别
- Array Broadcasting in numpy
- Java学习整理_写给自己的也希望能帮助需要的人_java入门基础
- ASCⅡ码、Unicode编码和汉字编码的区别
- 水仙花数算法
- Android传递Bitmap的几种简单方式