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

}

作用:将自定义数据类型转换为标准数据类型。

最新文章

  1. win7系统c盘瘦身,去虚拟内存方式
  2. 【01-05】hibernate BaseDao
  3. 特征描述算子-sift
  4. APACHE POI教程 --java应用程序用POI与Excel交互
  5. bzoj 2659: [Beijing wc2012]算不出的算式
  6. JAX-WS(二)之使用wsimport创建WebService客户端
  7. Parse和Convert的区别
  8. 顶尖大数据挖掘实战平台(TipDM-H8)产品白皮书
  9. Javaweb统计在线人数的小栗子
  10. Linux如何正确关机
  11. JVM 堆内存,参数优化
  12. VS2005 与虚拟机的那点事
  13. 服务器告警其一:硬盘raid问题
  14. Django 执行单独脚本及SyntaxError缩进报错解决
  15. linux中,当执行rpm -e删除一个软件包时,都做了些什么事
  16. dbeaver导出MySQL的架构提示&quot;IO Error: Utility &#39;mysqldump.exe&#39; not found in client home &#39;MySQL Connector/Net&quot;解决方案
  17. Web Service进阶
  18. 【WEB前端开发最佳实践系列】CSS篇
  19. 如何在cmd命令行中查看、修改、删除与添加环境变量,语法格式例子:set path;echo %APPDATA%
  20. mysql 存入乱码问题

热门文章

  1. Hessian Matrix 多元函数的极值 半正定矩阵 正定矩阵
  2. vim记住上次编辑和浏览位置
  3. YTU 2572: 猜灯谜
  4. RTMP直播到FMS中的AAC音频直播
  5. String 对象
  6. jsp中page指令用法详解
  7. RelativeLayout和layout_weight的异曲同工之妙(转载)
  8. StretchedBillboard 实现
  9. 洛谷 P4552 [Poetize6] IncDec Sequence【差分+脑洞】
  10. 51nod 1190 最小公倍数之和 V2【莫比乌斯反演】