运算符重载允许为类类型定义+、-、*、/等操作,如Complex类通过成员函数重载加减乘除实现复数运算,输出输入流需以友元函数重载,保持操作直观且不改变原对象,提升代码可读性与易用性。

在C++中,运算符重载是一种允许我们为自定义类型(如类)赋予标准运算符新含义的机制。通过它,我们可以像使用基本数据类型一样自然地操作对象,比如让两个对象相加、比较或输入输出。下面以实现一个简单的复数类为例,演示如何重载加减乘除以及输入输出流运算符。
假设我们要设计一个Complex类来表示复数,包含实部和虚部。为了让两个复数对象能直接使用+、-、*、/进行运算,需要重载这些运算符。
class Complex { private: double real, imag;
public: Complex(double r = 0, double i = 0) : real(r), imag(i) {}
<font color="#808080">// 重载加法</font>
Complex <strong>operator+</strong>(<font color="#0000FF">const</font> Complex& other) <font color="#0000FF">const</font> {
<font color="#0000FF">return</font> Complex(real + other.real, imag + other.imag);
}
<font color="#808080">// 重载减法</font>
Complex <strong>operator-</strong>(<font color="#0000FF">const</font> Complex& other) <font color="#0000FF">const<
/font> {
<font color="#0000FF">return</font> Complex(real - other.real, imag - other.imag);
}
<font color="#808080">// 重载乘法((a+bi)*(c+di) = (ac-bd)+(ad+bc)i)</font>
Complex <strong>operator*</strong>(<font color="#0000FF">const</font> Complex& other) <font color="#0000FF">const</font> {
<font color="#0000FF">return</font> Complex(
real * other.real - imag * other.imag,
real * other.imag + imag * other.real
);
}
<font color="#808080">// 重载除法(略复杂,需考虑分母模长)</font>
Complex <strong>operator/</strong>(<font color="#0000FF">const</font> Complex& other) <font color="#0000FF">const</font> {
<font color="#0000FF">double</font> denominator = other.real * other.real + other.imag * other.imag;
<font color="#0000FF">return</font> Complex(
(real * other.real + imag * other.imag) / denominator,
(imag * other.real - real * other.imag) / denominator
);
}
<font color="#808080">// 提供访问函数</font>
<font color="#0000FF">void</font> print() <font color="#0000FF">const</font> {
std::cout << "(" << real << " + " << imag << "i)";
}};
上述代码中,所有二元运算符都作为成员函数实现,接收一个常量引用参数,返回新的Complex对象。这样可以链式调用,且不修改原对象。
输入输出流( 和 >>)不能作为成员函数重载,因为它们的操作对象是std::ostream或std::istream,而不是我们的类。因此必须定义为友元函数或普通全局函数。
friend std::ostream& operator(std::ostream& out, const Complex& c) { out return out; }
friend std::istream& operator>>(std::istream& in, Complex& c) { in >> c.real >> c.imag; return in; }
将这两个函数声明为Complex类的友元,以便访问其私有成员。使用方式如下:
Complex a(3, 4), b(1, 2); Complex c = a + b; std::cout
std::cin >> a; // 输入两个数字分别赋给 real 和 imag
基本上就这些。掌握运算符重载后,可以让自定义类型更直观易用,提升代码可读性和封装性。关键在于合理设计接口,遵循直觉,不滥用特性。
以上就是C++运算符重载教程_C++重载加减乘除与输入输出流的详细内容,更多请关注其它相关文章!
# stream
# 包头百度seo代理
# 岳麓区电商营销推广
# 熊猫黑帽seo博客
# 沧州网络网站推广哪个好
# 郴州seo优化网
# 实体店铺营销与推广方案
# seo基础seo基础
# 桑蚕的营销与推广方案
# seo服务源码
# 抽象类
# 是一种
# 内存管理
# 如何使用
# 自定义
# 有什么
# 链式
# 如何实现
# 加减乘除
# 运算符
# 代码可读性
# 封装性
# c++
# 印尼咖啡推广中心网站
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
晓晓优选app支付宝绑定方法
微星主板BIOS怎么调整内存时序_内存参数手动优化BIOS设置教程
PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略
Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】
iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南
Yandex世界探索 最新官方免登录入口全知道
支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法
在XML中嵌入二进制数据(如图片)的最佳实践是什么? Base64编码与解析注意事项
J*aScript调试技巧_性能分析与内存快照
虫虫助手如何更新游戏
济南公交卡手机充值指南
j*a中ArrayBlockingQueue的使用
优酷下载视频的清晰度怎么选_优酷缓存清晰度设置与选择指南
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
跨语言测试实践:使用Python Selenium测试现有J*a Web项目
告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名
《i莞家》修改昵称方法
Apple Music无故扣费引质疑
花生壳内网映射新方案
b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法
三角洲行动2025年9月10日摩斯密码分享
德邦物流在线查询系统 德邦快递货物运输追踪
吃完饭就犯困是什么原因 餐后嗜睡如何缓解
《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐
从HTML表单获取逗号分隔值并转换为NumPy数组进行预测
抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系
谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录
无人机考证官网 中国民航无人机考证官网登录入口
《oppo商城》维修服务位置
邦丰播放器频道搜索设置
163邮箱在线登录 163邮箱网页版在线入口
《幻兽帕鲁》手游帕鲁捕捉技巧分享
《procreate》绘制渐变效果教程
Composer如何使用composer-plugin-api开发自定义插件
怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】
VS Code源代码管理(SCM)视图的进阶使用技巧
J*a中导出MySQL表为SQL脚本的两种方法
如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战
Win10怎么设置快速启动 Win10开启快速启动设置方法
视频转蓝光m2ts格式
C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析
sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧
J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析
晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制
如何在CSS中使用伪类选择器_hover实现悬停效果
LINUX怎么查看显卡信息_LINUX查看GPU状态
嘀嗒顺风车如何开具电子发票
智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析
如何定制PrimeNG Sidebar的背景颜色
创客贴登录页面入口 创客贴网页版最新网址链接
2025-12-20
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。