1.拷贝函数如果不涉及到资源管理,一般是在堆的资源,就不需要自己写。
2.操作符号重载:
1.使用对象:自定义类,通过函数的方式来自己给出新的操作符的意义
2.不能于原操作符相违背,加法的含义不能变为减法;
3.关键字是operator ,函数名是operator+ 操作符号,有几个操作数就几个形参,
前置加加和后置加加的区别就是参数是否带整形。需要注意的是在类里面定义oprator
参数天热自带一个this指针,所以如果有俩个操作数,函数形参里面就只写一个。
4.this 指针前面有 const修饰,完整的修饰是date const *this.
5.operator 函数的返回值于操作符号本身意义有关,运算结果是什么就返回什么,返回本神还是临时变量就看操作符号的具体意义
6.编译器会首先在全局检索这个操作符有没有重载,再去域里面找,同一个操作符重载,全局的形参比自定义类里面的形参多一个。
7.编译器的翻译:
bool operator>(const Date & x);//在类域里面定义前面还有一个 Date const * this参数
在函数中调用时
Date x;
Date y;
x > y 会被翻译成:x.operator>(y);
而在全局定义需要这样定义
bool operator>(const Date &X,const Date & y)
x>y就会被翻译成operator>(x,y);
一般将操作符重载定义在类域里面这样就不会导致在类外无法访问成员的问题