c++ 运算符重载、数据类型转换
来源:互联网 发布:哑舍赤龙服淘宝 编辑:程序博客网 时间:2024/05/22 17:19
1.运算符就是“+”、“>>”等符号,对运算符重载实质就是对函数的重载,这样运算符就能在原有基础上增加新功能,不能自己定义新运算符,只能对已有运算符重载,重载运算符后不能改变运算符本身的特性,比如优先级,运算数个数等;
2.运算符重载格式:
函数类型 operator 运算符名称(形参表)
{
//具体操作
}
e.g.complex operator +(complex &c1,complex &c2)
operator是关键字,函数名由operator和运算符共同组成,如”operator +”。
3.不能重载的5个运算符:“.”、“*”、“::”、“sizeof”、“?:”。
4.对运算符重载的函数有两种方式:类成员函数、类友元函数。
类成员函数:complex operator +(complex &c1)
这样就可以直接c1+c2了,相当于是c1.operator+(c2),operator+就是c1的成员函数,因为可以通过this指针访问类的数据成员,所以可以少写一个函数参数,第一个参数必须为本类对象。
类友元函数:complex operator +(complex &c1,complex &c2)
这样c1+c2相当于是operator+(c1,c2)
如果不用友元,则重载的运算符函数无权访问类的私有成员,所以要用友元。
因为友元会破坏类的封装,所以尽量将运算符函数作为类的成员。一般来说,双目运算符为友元,单目和复合运算符为成员函数。
5.数据类型显式转换:
c风格:(int)12.3=12
c++风格:int(12.3)=12
6.构造函数转换数据类型,重载构造函数即可。
7.类型转换函数:
格式:operator 返回类型()//一般是在类内部写的,
{
//实现转换的语句
}
e.g.
class A
{
public:
int a;
A(int x) :a(x) {}
operator int()
{
return a;
}
};
int main()
{
A haha(2);
int b = haha + 3;
A c = haha + 4;
cout<<b<<"\n"<<c.a<<endl;
return 0;
//结果输出5和6
}
作用:将自定义数据类型转换为标准数据类型。
- c++ 运算符重载、数据类型转换
- C++:运算符重载、string类重写、数据类型转换、->操作符重载、virtual继承、virtual函数、typeid
- C++:运算符重载、string类重写、数据类型转换、->操作符重载、virtual继承、virtual函数、typeid
- 数据类型 数据类型转换 运算符
- 数据类型 数据类型转换 运算符
- 数据类型 数据类型转换 运算符
- 数据类型转换&运算符
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- iptables中DNAT、SNAT和MASQUERADE的理解
- 终生学习者,永远劳苦命!
- button的onclick时间
- Ubuntu 16.04 pppoe拨号上网
- 并发实战——“JUC线程池”之线程池原理01(简介,数据结构,调度)
- c++ 运算符重载、数据类型转换
- android5.0之Activity过渡动画
- 【JavaSE笔记】面向对象(四)_接口
- C/C++中extern关键字详解
- 69. Sqrt(x)
- 【二分】hdu 1969 Pie(同木材加工)
- ELK日志分析系统
- ThreadLocal可能引起的内存泄露
- 强联通分量模板---基于tarjan算法