关于运算符重载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于运算符重载相关的知识,希望对你有一定的参考价值。
运算符重载需遵循以下原则:
1、除了类所属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符、三目运算符"?:"之外,C++中所有的运算符都可以进行重载
2、重载运算符限制在C++已有的运算符范围内,不允许创建新的运算符
3、重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符的操作数的个数及语法结构
4、运算符重载不能改变运算符用于内置类型的对象的含义,只能用于自定义类型对象之间,或者自定义类型和内置类型的混合使用
5、用户自定义类一般都需要重载后使用,但两个除外(=和&)
6、运算符重载可以通过成员函数的形式,也可通过友元函数、也可通过非成员函数、非友元函数的普通函数
重载的两种形式:
1、重载为类的成员函数
函数值显示的说明了一个参数,该参数为运算符的右操作数、
前置单目运算符重载时,不需要显示说明参数
后置单目运算符重载时,函数要带有一个整型参数
2、重载为类的友元函数
当运算符重载为类的友元函数时,由于没有隐含的this指针,因此所有的操作数都需要显示的表现出来
两种重载的比较:
当运算符函数是一个成员函数时,最左边的第一个参数必须是这个类类型的一个对象,如果最左边的参数不是这个类类型的对象,或者是内置类型的对象,则必须使用友元函数来重载
若运算符所需的操作数希望有隐式类型的转换时,则只能用友元函数
运算符=、()、[]、->可作为类成员运算符,不能作为友元运算符
除赋值运算符外,重载运算符可由派生类继承下去
《完》
本文出自 “零蛋蛋” 博客,谢绝转载!
以上是关于关于运算符重载的主要内容,如果未能解决你的问题,请参考以下文章