C++编程:重载操作符与转换在keil5中使用pc-lint9.0教程
需积分: 31 171 浏览量
更新于2024-08-10
收藏 3.18MB PDF 举报
"这篇教程主要讨论了C++中的重载操作符与转换,以及如何在keil5中使用pc-lint9.0。教程涵盖了C++ Primer中的第1至16章内容,特别是关于类的成员函数和友元函数的使用,以及操作符重载的规则和实践应用。"
在C++编程中,操作符重载是让类能够自定义特定操作符行为的关键特性。当类类型的操作数涉及到内置操作符时,如加法`+`、乘法`*`或流输入/输出操作符`<<`、`>>`,我们可以通过重载这些操作符使得它们能正确处理类的对象。重载操作符需要遵循一些规则:
1. 重载操作符必须至少有一个类类型或枚举类型的操作数。
2. 重载操作符不保证操作数的求值顺序,例如重载的`&&`和`||`不再有短路求值的特性,这与内置操作符不同。
3. 优先级、结合性和操作数数目在重载操作符中保持不变。
在给定的描述中,提到了`Sales_item`类的例子,该类重载了输入`>>`、输出`<<`以及加法`+`和复合赋值`+=`操作符。这是为了让`Sales_item`对象能够像内置类型一样方便地进行输入、输出和算术运算。
```cpp
class Sales_item {
public:
friend std::istream& operator >> (std::istream&, Sales_item&);
friend std::ostream& operator <<(std::ostream&, const Sales_item&);
Sales_item& operator += (const Sales_item&);
};
Sales_item operator+ (const Sales_item&, const Sales_item&);
```
这里,`friend`关键字使得输入和输出操作符可以直接访问`Sales_item`的私有和保护成员,而不需要公开这些成员。`operator +=`是一个成员函数,负责将另一个`Sales_item`对象加到当前对象上,而`operator +`是全局函数,它接收两个`Sales_item`对象并返回一个新的`Sales_item`对象。
描述中还提到了一个程序示例,涉及了`Sales_item`的构造函数和操作符重载的使用。当`Sales_item`的构造函数不是`explicit`时,可以隐式地从`string`转换为`Sales_item`,这在第三句中体现出来。如果构造函数被声明为`explicit`,则不允许这种隐式转换,需要显式地创建`Sales_item`对象。
```cpp
string null_book = "0-000-00000-0";
Sales_item item(cin);
item += null_book;
```
在这个例子中,`null_book`通过构造函数被转换为`Sales_item`临时对象,然后通过`+=`操作符将其添加到`item`对象中。
整个教程涵盖了C++语言的基础到进阶主题,包括变量、类型、标准库、容器、算法、类和面向对象编程等,这些都是学习和掌握C++编程的重要部分。通过解决习题,读者可以巩固理解并熟练运用这些概念和技术。
2016-11-07 上传
2014-06-19 上传
103 浏览量
点击了解资源详情
点击了解资源详情
598 浏览量
123 浏览量
2017-07-05 上传
Sylviazn
- 粉丝: 29
- 资源: 3874
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析