C++ 运算符重载
2016-05-17 22:41
791 查看
运算符重载特性:
(1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。
(2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。
(3) 运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。
(4) 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。
(5) 运算符重载不能改变该运算符用于内部类型对象的含义。它只能和用户自定义类型的对象一起使用,或者用于用户自定义类型的对象和内部类型的对象混合使用时。
(6) 运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符。
(7)重载运算符的函数不能有默认的参数,否则就改变了运算符的参数个数,与前面第3点相矛盾了;
(8)重载的运算符只能是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型的运算符的规则了,会引会天下大乱的;
(9)用户自定义类的运算符一般都必须重载后方可使用,但两个例外,运算符“=”和“&”不必用户重载;
(10)运算符重载可以通过成员函数的形式,也可是通过友元函数,非成员非友元的普通函数。
2.函数重载过程
<函数类型> operator <运算符>(<参数表>)
{
<函数体>
}
(1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。
(2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。
(3) 运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。
(4) 重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。
(5) 运算符重载不能改变该运算符用于内部类型对象的含义。它只能和用户自定义类型的对象一起使用,或者用于用户自定义类型的对象和内部类型的对象混合使用时。
(6) 运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符。
(7)重载运算符的函数不能有默认的参数,否则就改变了运算符的参数个数,与前面第3点相矛盾了;
(8)重载的运算符只能是用户自定义类型,否则就不是重载而是改变了现有的C++标准数据类型的运算符的规则了,会引会天下大乱的;
(9)用户自定义类的运算符一般都必须重载后方可使用,但两个例外,运算符“=”和“&”不必用户重载;
(10)运算符重载可以通过成员函数的形式,也可是通过友元函数,非成员非友元的普通函数。
2.函数重载过程
<函数类型> operator <运算符>(<参数表>)
{
<函数体>
}
相关文章推荐
- 单例模式-c++实现
- 库函数和系统调用
- 第8周 C语言及程序设计提高例程-31 编制自己的字符串函数
- c语言学生管理
- C语言游戏和代码
- 对Windows平台C程序内存分布研究及安全性分析
- 一起talk C栗子吧(第一百五十一回:C语言实例--socket通信地址)
- C++ string类型详解
- C++走向远洋——50(Time类中的运算符重载、一目,二目比较运算符、二目赋值运算符、二目加减法运算符)
- (未总结完成)C++中的对象放在哪里?
- C++中负数是真还是假?
- c++中vector的用法详解
- C++实现委托机制(三)——lambda表达式封装
- C++的头文件和实现文件分别写什么
- C++深层复制构造函数
- 论飞机游戏在C语言程序的基本语句能完成功能的体会
- C语言中memset函数详解
- 查询自动售货机中商品的价格
- C++多态:从虚表指针到设计模式
- C++ vector用法