C++ Primer 5e chapter 14.1
来源:互联网 发布:matlab编程题 编辑:程序博客网 时间:2024/05/29 19:46
1、除了函数调用重载运算符,其他重载不能含有默认参数;
2、如果运算符是成员函数,则参与运算的左侧对象默认绑定到this指针对象,所以这个时候形参列表要比真正的运算符参数少一个;
3、无法重载内置类型的运算符,比如 int operator+ (int, int);
4、绝大多数运算符可以重载,除了少数一些,比如::,.* ;
5、应该保证重载后的运算符具有原来的意思;
6、当面对重载函数是成员函数还是非成员函数的时候: 赋值,下标,调用都必须是成员函数,递增递减等改变对象状态的元算符要是成员函数;具有对称性的运算符可以转换任意一段的运算对象,如+ - * 关系运算符等等,应该是非成员函数;
7、输出运算符: ostream &operator<<(ostream &os, const A &a),不要换行,必须是非成员函数(因为返回值不是本对象);
8、输入运算符:istream &operator>>(istream &is, A &a),注意内部需要定义如果读取该对象,检查读入是否成功,失败要给出信息,要做防御使编程,或默认初始化;
9、算数运算符和关系运算符:都是非成员函数,通常使用+=实现+即可;
10、逻辑上,一旦定义==就定义!=,一个委托另一个实现即可;非成员函数
11、赋值运算符:无论是移动还是拷贝赋值,都是成员函数,另外,一般把符合运算符重载在类内;
12、下表运算符:成员函数,一般定义两个,返回常量对象和非常量对象;
13、递增和递减:成员函数,同时定义前置和后置版本,前置版本(返回递增后的引用),A& operator++ (),后置版本(返回递增前的引用),A& operator++ (int),这个int并没有实际作用,只是为了区别两个版本,后置可以调用前置来完成操作;
14、前置运算符实现的时候注意检查是否可以完成++或--,检查指针是否已经到了尾后或者第一个;
15、成员访问运算符(*和->): 成员函数,A& operator*() const ; A* operator->() constt;一般用一个调用另一个完成实现;
- C++ Primer 5e chapter 14.1
- C++ Primer 5e chapter 5
- C++ Primer 5e chapter 1
- C++ Primer 5e chapter 2
- C++ Primer 5e chapter 3
- C++ Primer 5e chapter 4
- C++ Primer 5e chapter 6
- C++ Primer 5e chapter 7
- C++ Primer 5e chapter 8
- C++ Primer 5e chapter 9.1
- C++ Primer 5e chapter 9.2
- C++ Primer 5e chapter 10.1
- C++ Primer 5e chapter 10.2
- C++ Primer 5e chapter 11
- C++ Primer 5e chapter 12
- C++ Primer 5e chapter 13.1
- C++ Primer 5e chapter 13.2
- C++ Primer 5e chapter 14.2
- Java技术资料
- [LeetCode] Search a 2D Matrix(二分查找)
- Part1. OSGi的优势和可能遇到的问题
- C# 之 FTP服务器中文件上传与下载(二)
- [GDOI模拟2015.08.18]解密
- C++ Primer 5e chapter 14.1
- java实现ArrayList LinkedList 和迭代器
- C/C++头文件注释
- CCActionGird3D源码解析
- (2.1.20)java中的进程
- 【BZOJ1212】【HNOI2004】L语言
- Deep Learning及NLP(自然语言处理)杂谈--第三部分
- 黑马程序员 --- OC中的类
- iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示