运算符重载
来源:互联网 发布:中国证券软件下载 编辑:程序博客网 时间:2024/06/08 16:14
<<插入运算符
>>提取运算符
上面两个运算符本来是逻辑左移和逻辑右移,因此这两个运算符进行了重载。
运算符重载,使运算符能用于类对象;
运算符被重载后,其原有的功能仍然保留,没有丧失或改变;
运算符重载实际上是函数的重载:
对每个需要重载的运算符定义一个重载运算符的函数
需要执行被重载的运算符时,系统就自动调用该函数,以实现相应运算。
运算符重载的方法:
类型名 operator运算符名称 (形参表列){对运算符的重载处理},比如:
Complex Complex::operator+(Complex &c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
上面的程序更简单的写法:
Complex Complex::operator+(Complex &c)
{
return Complex(real+c.real.imag+c.imag);//直接调用了构造函数生成了结果对象,并返回
}
上面两种方式都是通过成员函数实现的。其实还可以通过友元函数或者一般函数进行实现,如下:
Complex operator+(Complex &c1,Complex &c2)
{
return (c1.real+c2.real,c1.imag+c2.imag);
}
只不过对于上面的实现来说,如果声明为友元函数还好,这样的话这个函数可以访问Complex类的私有数据成员
real和imag;但是如果是一般的函数,那么就需要在Complex类中定义public的set或者get函数,来对私有数据成员进行操作。
对于上面的对‘+’的运算符重载来说,可以通过
Complex c3=c1+c2;//需要注意的是这里调用了默认复制构造函数。通过浅复制将第一种方式中的c的值复制给了c3.然后第一种方式中的局部变量c就会被释放掉。
或者
c3=c1.operator+(c2);
来使用,这两种是等价的。需要注意的是对于前一种,当前对象一定是左边的这个,因为在后一种
中可以看到这其实就是当前对象调用了成员函数。
- 运算符重载 [++,--,+,<<; &&,||(不可重载)]
- 重载之运算符重载
- 重载赋值运算符
- C++运算符重载
- 运算符重载
- 运算符重载总结
- 运算符重载例子
- 运算符重载
- 运算符重载
- 基础:运算符重载
- 运算符重载
- 运算符重载
- 重载赋值运算符
- C#运算符重载
- C++-运算符重载
- 重载赋值运算符
- 运算符重载
- 有关运算符重载
- Linux中最受欢迎的邮件传输代理(MTA)
- 如何使用Blender将点模型的obj文件渲染成网格模型
- manacher算法入门HDU5731
- sublime text3怎样快速成为html格式
- 如何防暴力破解??
- 运算符重载
- C++学习:拷贝构造函数
- 解析xml
- 前端面试题(二)
- sendkeys && appactivate
- 回溯旅行商问题
- JAVA初窥:RMI
- 常用 SQL Server 规范集锦
- Python在保存或运行时出现SyntaxError: Non-ASCII character '\xe8'