您现在的位置是:亿华云 > 人工智能
C++ 流插入和流提取运算符的重载
亿华云2025-10-08 23:06:29【人工智能】2人已围观
简介— 1 —<< 运算符的重载C++ 在输出内容时,最常用的方式:std::cout<<1<<"hello"; 提出问题:那这条语句为什么能成立呢?
— 1 —
<< 运算符的插入重载C++ 在输出内容时,最常用的和流方式:
std::cout << 1 <<"hello";提出问题:
那这条语句为什么能成立呢? cout 是什么?为什么 << 运算符能用在 cout 上呢?原因:
实际上,cout 是运算在 iostream 头文件中定义的 ostream 类的对象。 << 能够用在 cout 上是重载因为,在 ostream 类对 << 进行了重载。插入对于如下这条语句:
std::cout << 1 <<"hello";有可能按以下的和流方式重载成 ostream 类的成员函数:
ostream & ostream::operator<<(int n) { .... // 输出n整型的代码 return *this; } ostream & ostream::operator<<(const char * s) { .... // 输出s字符串的代码 return *this; }那么在使用流插入<<运算符时,等价于的运算形式如下:
01 数据类型是int类型时:
std::cout << 1;上面的语句,b2b供应网等价于:
cout.operator<<(1);02 数据类型是重载字符串类型时:
std::cout << "hello";上面的语句,等价于:
cout.operator<<("hello");03 数据类型组合使用时:
std::cout << 1 <<"hello";上面的插入语句,等价于:
( cout.operator<<(1) ).operator<<("hello");假定我们要想把某个对象里的和流内容进行打印输出,那么我们可以重载 ostream 类的运算流插入 << 运算符。
下面以 CStudent 类作为例子:
输出结果:
1,重载20,小林coding需要注意:
ostream & operator<<(ostream & o, const CStudent & s)函数是全局的,所以函数的插入第一个参数必须要传入 ostream 的对象,并且 CStudent 类需要将此函数声明成友元函数,和流使得函数可以访问 CStudent 类的运算私有成员变量。
— 2 —
>> 运算符的重载
还是云南idc服务商以 CStudent 类作为例子,假设想通过键盘的输入的内容,来初始化对象,则我们可以重载 istream 类的流提取 >> 运算符。
输入内容和输出内容:
// 输入内容: 1,20,小林coding // 输出内容: 1,20,小林coding— 3 —
小结
要想流插入 << 运算符和流提取 >> 运算符能针对自定义的对象,那么我们就需要重载针对该对象的 ostream 类的 << 运算符 和 istream 的 >> 运算符,并且只能重载成全局的函数。
然后在 CStudent 类里需要把上面的两个重载函数声明成友元函数,使得两个重载的函数可以访问和赋值 CStudent 类里的私有成员函数。服务器托管
很赞哦!(3)
相关文章
- 便宜域名使用如何?小白可以买到便宜域名吗?
- 面试突击:如何使用线程池执行定时任务?
- 再也不怕面试官问我防抖与节流了
- 阿里大淘系模型治理阶段性分享
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 关于MySQL线程池,这也许是目前最全面的实用帖!
- 小心!用String写代码可能会内存泄漏!
- 聊聊最近给 Node.js 提交的几个PR
- 只要我们做的是从目前的市场情况选择域名,从简单易记,从个性特征上,我们就可以找到一个好域名进行注册。域名注册进行域名记录和解析以及绑定网站后,客户可以通过URL登录您的网站。
- 选择云计算数据库的正确方法