C++之双目/单目等运算符的重载
作者:网络转载 发布时间:[ 2014/5/21 10:30:21 ] 推荐标签:Net 单目运算符重载
3.关于自增自减运算符的使用:
(1) 前缀自增自减运算符
a.表达式的值是增减以后的值
b.运算函数返回的是操作数的引用
c.成员函数形式的运算符函数没有参数,友元函数形式的运算符函数只有一个参数:操作数
d.可以连用
class A
{ A& operator++(){ ++m_r;++m_i;return *this;}};//成员函数形式
A& operator(A& a)//友元函数形式
{
++m_r;++m_i;
return a;
}
|
注意:加引用是为了连续使用;
(2) 后缀自增自减运算符
a.表达式的值是增减以前的值
b.运算函数返回的是操作数增减以前的副本
c.成员函数形式的运算符函数有int类型的哑元参数,友元函数形式的运算符函数有两个参数:操作数 和 哑元
d.不可以连用
class A
{ const A operator++(int){return(m_r++,m_i++);}};//成员函数形式
const A operator++(A& a,int)//友元函数形式
{ return A(a.m_r++,a.m_i++);}
注意:加const是为了防止连续运算
4. 类型转换运算符函数
4.1格式:
在源类型中定义如下形式的运算符函数
operator 目标类型(void)
{
构造一个目标类型的对象返回(目标类型也可以是基本数据类型)
}
功能:
将一个类的对象转换成另一个类型的数据,该函数没有返回值类型;
注意:
如果在源类型中提供类型转换运算符函数的同时,在目标类型中定义支持类型转换的构造函数,对于隐式类型转换,系统会优先选择类型转换运算符函数完成转换,而对于显式类型转换,系统优先选择构造函数(建议只提供构造函数即可,因为可以使用explicit 关键字修饰构造函数,表示该构造函数只能用于显示类型转换,从而防止潜在的错误;)
扩展:
如果一个类类型对象和一个基本数据类型运算时,怎么处理?
Complex c(2,3);
cout << "c + 100 " << c + 100 << endl;//c.operator+(100);
5.不允许用户重载的运算符
::作用域解析操作符
. 成员访问操作符
.* 成员指针解引用
?: 三目运算符
sizeof 字节长度运算符
typeid 类型信息操作符
注意:
(1)操作符的操作数中没有类类型的操作数时,不能重载
(2)不能通过运算符重载去发明新的操作符,比如:** 注意:加引用是为了连续使用;
(2) 后缀自增自减运算符
a.表达式的值是增减以前的值
b.运算函数返回的是操作数增减以前的副本
c.成员函数形式的运算符函数有int类型的哑元参数,友元函数形式的运算符函数有两个参数:操作数 和 哑元
d.不可以连用
class A
{ const A operator++(int){return(m_r++,m_i++);}};//成员函数形式
const A operator++(A& a,int)//友元函数形式
{ return A(a.m_r++,a.m_i++);}
注意:加const是为了防止连续运算
4. 类型转换运算符函数
4.1格式:
在源类型中定义如下形式的运算符函数
operator 目标类型(void)
{
构造一个目标类型的对象返回(目标类型也可以是基本数据类型)
}
功能:
将一个类的对象转换成另一个类型的数据,该函数没有返回值类型;
注意:
如果在源类型中提供类型转换运算符函数的同时,在目标类型中定义支持类型转换的构造函数,对于隐式类型转换,系统会优先选择类型转换运算符函数完成转换,而对于显式类型转换,系统优先选择构造函数(建议只提供构造函数即可,因为可以使用explicit 关键字修饰构造函数,表示该构造函数只能用于显示类型转换,从而防止潜在的错误;)
扩展:
如果一个类类型对象和一个基本数据类型运算时,怎么处理?
Complex c(2,3);
cout << "c + 100 " << c + 100 << endl;//c.operator+(100);
5.不允许用户重载的运算符
::作用域解析操作符
. 成员访问操作符
.* 成员指针解引用
?: 三目运算符
sizeof 字节长度运算符
typeid 类型信息操作符
注意:
(1)操作符的操作数中没有类类型的操作数时,不能重载
(2)不能通过运算符重载去发明新的操作符,比如:**
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11