C++ operator重载运算符教程_C++重载输入输出流运算符示例


运算符重载允许为自定义类型重新定义运算符行为,如通过友元函数重载实现Person类的输入输出,支持链式操作并提升代码可读性。

c++ operator重载运算符教程_c++重载输入输出流运算符示例

在C++中,operator重载是一种非常强大的机制,它允许我们为自定义类型(如类或结构体)重新定义运算符的行为。通过重载运算符,我们可以让对象像基本数据类型一样进行加减、比较、输入输出等操作,使代码更直观、易读。

什么是运算符重载

运算符重载就是赋予已有的运算符新的含义,使其能作用于用户自定义的类型。例如,可以让两个对象使用“+”相加,或使用“

需要注意的是,只能重载C++已有的运算符,不能创建新的符号;而且重载不能改变运算符的优先级和结合性。

重载输入输出流运算符 >

输入输出流运算符 (输出)和 >>(输入)是全局操作符,通常用于与 std::coutstd::cin 配合使用。由于它们的操作对象一个是流对象,另一个是我们自定义的类对象,因此无法将它们作为成员函数重载(因为第一个参数必须是流类型),而应定义为友元函数普通全局函数

立即学习“C++免费学习笔记(深入)”;

下面是一个完整的示例,演示如何重载 >> 运算符:

// 示例:Person 类,包含姓名和年龄 #include iostream> #include class Person { private: std::string name; int age; public: // 构造函数 Person() : name(""), age(0) {} Person(const std::string& n, int a) : name(n), age(a) {} // 声明友元函数,以便访问私有成员 friend std::ostream& operator>(std::istream& in, Person& p); }; // 重载输出运算符 > std::istream& operator>>(std::istream& in, Person& p) { std::cout > p.name; std::cout > p.age; return in; // 支持链式输入 }

在主函数中使用:

int main() { Person p1("张三", 25); // 使用重载的 > 输入 std::cin >> p2; std::cout

关键点说明

  • 重载 >> 必须返回对应流的引用(std::ostream&std::istream&),这样才能支持连续输入输出操作。
  • 函数参数中的对象一般用 const 引用 传递,避免不必要的拷贝,同时保证不修改原对象(尤其对输出操作而言)。
  • 使用友元函数可以访问类的私有成员,但会破坏封装性,所以应谨慎使用。仅在确实需要访问私有时才将其声明为友元。

其他常见可重载运算符示例

除了输入输出,还可以重载如 +、-、==、!= 等运算符。例如重载“==”判断两个Person是否同名同龄:

bool operator==(const Person& other) const { return name == other.name && age == other.age; }

这样就可以直接写:if (p1 == p2),代码更清晰。

基本上就这些。掌握运算符重载,尤其是输入输出流的重载,能显著提升C++程序的可读性和可用性。关键是理解其语法结构和设计意图,合理使用友元,保持接口一致。不复杂但容易忽略细节,比如返回流引用和参数使用引用传递。

以上就是C++ operator重载运算符教程_C++重载输入输出流运算符示例的详细内容,更多请关注其它相关文章!


# c++  # 中山地产网站推广怎么做  # 长治关键词排名哪家好  # 常州抖音付费营销推广  # 还可以  # 是一种  # 边缘  # 是一个  # 的是  # 游戏开发  # 链式  # ai  # ios  # stream  # 封装性  # 代码可读性  # 回流  # 运算符  # 自定义  # 如何实现  # 郑州新站seo网站优化推荐  # 抚顺seo推广技巧  # 服装网站如何建设  # 湛江网站优化专家  # 成都新手网站建设  # 网站建设 网站优化方案  # 莱芜网站建设正规公司 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《土豆雅思》修改密码方法  如何使用CSS Grid实现“大方块左侧,小方块右侧垂直堆叠”的水平布局  iPhone12是否要更新ios16  Python高效统计字典嵌套列表值在目标列表中的出现次数  Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题  qq音乐官方网站入口_qq音乐在线听歌网页版链接  解决Windows上Composer PATH变量冲突导致的命令无法识别问题  《全民k歌》音乐怎么下载到本地2025  CSS如何使用outline-offset与颜色组合突出元素边框  win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】  猫眼电影app如何筛选支持退改签的影院_猫眼电影退改签影院筛选方法  word页码灰色不能用如何解决  Go语言中方法接收器的选择:值类型还是指针类型?  iphone16系列配置参数介绍  mysql如何配置从库只读_mysql从库只读设置方法  在PySimpleGUI中实现键盘按键绑定按钮事件  J*aScript模块加载器_RequireJS原理分析  VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略  自定义你的VS Code状态栏,监控关键信息  《火影忍者:木叶高手》快速升级攻略  金牛福袋获取攻略  CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现  优酷下载视频的清晰度怎么选_优酷缓存清晰度设置与选择指南  263企业邮箱如何设置邮件转发功能  包子漫画在线观看入口 包子漫画网正版全集链接  《oppo商城》维修服务位置  mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  vivo手机视频通话美颜怎么设置_vivo视频通话美颜开启方法  CSS如何控制元素外边距_margin实现布局间隔  win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】  Windows Audio服务启动失败怎么办_电脑没声音的终极服务修复法【修复】  Animex动漫社社登录官网 Animex动漫社资源社入口直达  163邮箱网页版入口 163邮箱在线使用  QQ网页版入口导航 QQ网页版在线访问通道  外卖小程序对接第三方配送  使用Python和NLTK从文本中高效提取名词的实用教程  三星M34录音变声问题_Samsung M34麦克风调整  铁路12306入口 铁路12306官网版入口登录网址  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  《偃武》甘宁技能详解  Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法  《知到》打卡课程方法  c++中的const关键字用法大全_c++ const正确使用指南  消除网页顶部意外空白线:CSS布局常见问题与解决方案  雨课堂官网在线登录 网页版雨课堂登录链接  126手机126邮箱登录_126邮箱手机登录入口官网  原子笔记app误删找回教程  J*aScript模拟悬停与点击:自动化网页动态元素交互指南 

 2025-12-18

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.