码迷,mamicode.com
首页 > 其他好文 > 详细

关于运算符重载

时间:2016-09-15 23:04:48      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:关于运算符重载

运算符重载需遵循以下原则:

1、除了类所属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符、三目运算符"?:"之外,C++中所有的运算符都可以进行重载

2、重载运算符限制在C++已有的运算符范围内,不允许创建新的运算符

3、重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符的操作数的个数及语法结构

4、运算符重载不能改变运算符用于内置类型的对象的含义,只能用于自定义类型对象之间,或者自定义类型和内置类型的混合使用

5、用户自定义类一般都需要重载后使用,但两个除外(=和&)

6、运算符重载可以通过成员函数的形式,也可通过友元函数、也可通过非成员函数、非友元函数的普通函数


重载的两种形式:

1、重载为类的成员函数

函数值显示的说明了一个参数,该参数为运算符的右操作数、

前置单目运算符重载时,不需要显示说明参数

后置单目运算符重载时,函数要带有一个整型参数

2、重载为类的友元函数

当运算符重载为类的友元函数时,由于没有隐含的this指针,因此所有的操作数都需要显示的表现出来


两种重载的比较:

当运算符函数是一个成员函数时,最左边的第一个参数必须是这个类类型的一个对象,如果最左边的参数不是这个类类型的对象,或者是内置类型的对象,则必须使用友元函数来重载

若运算符所需的操作数希望有隐式类型的转换时,则只能用友元函数

运算符=、()、[]、->可作为类成员运算符,不能作为友元运算符

除赋值运算符外,重载运算符可由派生类继承下去


《完》

本文出自 “零蛋蛋” 博客,谢绝转载!

关于运算符重载

标签:关于运算符重载

原文地址:http://lingdandan.blog.51cto.com/10697032/1852965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!