C++运算符重载规则与类对象处理

需积分: 49 7 下载量 160 浏览量 更新于2024-08-10 收藏 6.61MB PDF 举报
"C++ 谭浩强" 在C++编程中,运算符重载是一项重要的特性,允许程序员为自定义类型赋予特定的运算符行为。《点矛盾——快速有效的嵌入式系统》中详细阐述了重载运算符的一些规则,这些规则确保了语言的稳定性和一致性。 1. **不能重载的运算符**:为了保持某些运算符的基本功能,如访问成员(域运算符)和计算对象大小(sizeof运算符),这两个运算符是不能被重载的。因为它们作用于类型而非变量或表达式,不具备重载的条件。 2. **运算对象数量不变**:重载运算符不能改变其操作数(即运算对象)的数量。这意味着如果一个运算符原本需要两个操作数,重载后依然如此。 3. **优先级和结合性不变**:运算符的优先级和结合性是语言的一部分,重载不能改变这两者,以保持运算的解析规则。 4. **无默认参数**:重载的运算符函数不能设置默认参数,这会改变操作数数量,与规则3冲突。 5. **至少一个类对象**:重载运算符的参数列表中至少应该有一个是类对象或者类对象的引用,避免对标准类型数据的运算符性质产生影响。 6. **赋值运算符和地址运算符**:虽然类对象通常需要重载运算符,但赋值运算符(=)和地址运算符(&)是例外。赋值运算符允许同类对象之间的赋值,而地址运算符可以返回类对象在内存中的地址,无需用户重载。 7. **相似性原则**:重载运算符的功能应尽可能与该运算符作用于标准类型时的行为保持一致,以提供一致的用户体验和可预测的结果。 这个资源,作为《C++程序设计》的一部分,属于中国高等院校计算机基础教育课程体系规划教材,由谭浩强编著。全书分为四个部分,从基本知识、面向过程的程序设计、基于对象的程序设计到面向对象的程序设计,逐步深入介绍C++语言。书中详细讲解了C++的起源和发展,以及如何从C语言扩展到C++,强调了C++的面向对象特性,并提供了关于类、对象、运算符重载、继承、派生、多态性等核心概念的介绍,旨在帮助读者掌握高效且灵活的程序设计方法。