C++基础学习第八课(运算符重载)
作者:互联网
第八课
1,意义:
·运算符重载,就是赋予运算符新的含义,和函数重载一样,一个函数名可以用来代表不同功能的函数;·
·运算符重载是为了解决类对象之间的运算符,通常的运算符只用于算术运算,如常量int之间,因为编译器已经定义了,而一个类两个对象之间成员进行运算必须重新定义,让编译器在遇到对象运算时能按我们要求进行运算
2,运算符重载限制
1,可以重载的运算符
算术运算符: | + - * / % |
---|---|
自增、自减运算符: | ++ – |
位运算符: | | & ~ ^ << >> |
关系运算符: | == != < ><= >= |
赋值运算符: | = += -= /= %= |= ^= <<= >>= |
单目运算符: | + - * & |
动态内存分配: | new delete new[] delete[] |
其他运算符 | () -> . [] |
逻辑运算符: | || && ! |
2,不能重载的运算符
成员访问运算符: | . |
---|---|
域运算符: | :: |
成员指针访问运算符: | .* ->* |
长度运算符: | sizeof |
条件运算符: | ? : |
预处理符号: | # |
3,运算符重载规则
1,重载运算符函数可以对运算符作出新的解释,但原有基本语义不变;
·不改变运算符的优先级;
·不改变运算符的结合性;
·不改变运算符所需要的操作数;
·不能创建新的运算符;
4,运算符重载语法
返回类型 类名::operator op(参数列表)
{
//对应运算符的操作
}
注意:一个运算符被重载后,原有意义没有失去,只是定义了相对特定类的一个新运算符;
5,运算符重载的两种方法
1,运算符可以重载为两种函数,成员函数或友元函数;
2,两种形式的选择时机
·左操作数(或者只有左操作数时),是本类的对象时,可选成员函数形式;
·左操作数不是本类的对象,必须采用非成员函数形式,一般是友元函数;
·一般单目运算符最好被重载为成员函数,双目运算符重载为友元函数;
·具有可交换性的双目运算符最好两种形式都有(成员函数时适用左操作数为本类对象,友元函数时适用左操作数为其他类的对象);
6,单目运算符重载
·二元运算符:
ObjectL op ObjectR //ObjectL为左操作数 ,ObjectR为右操作数,op为运算符;
·重载为成员函数,解释为:
Object.operator op(ObjectR) ;
·重载为友元函数:
operator op(ObjectL,ObjectR);
标签:第八课,操作数,函数,成员,C++,运算符,重载,op 来源: https://blog.csdn.net/kdnnnd/article/details/114307959