鱼C论坛

 找回密码
 立即注册
查看: 2190|回复: 14

c++primer第四版

[复制链接]
发表于 2016-1-1 16:56:57 | 显示全部楼层 |阅读模式
100鱼币
第七页原文如下”输入操作符(>>操作符)行为与输出操作符相似。它接收一个istream对象作为其左操作数,接收一个对象作为其右操作数,它从istream操作数读取数据并保存到右操作数中。像输出操作符一样,输入操作符返回其左操作数作为结果。”
问题如下:>>的作用不就是读取并赋值吗?但最后一句为何说”返回左操作数作为结果”?返回是返回到哪?结果是作为什么的结果?

最佳答案

查看完整内容

新手回答 仅供参考,这个操作符不是赋值操作符, 专业的词我也不会说,就是有点流向的意思 >>意思就是 吧屏幕输入的字符,流向>>操作符右边的变量!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-1 16:56:58 | 显示全部楼层
新手回答 仅供参考,这个操作符不是赋值操作符, 专业的词我也不会说,就是有点流向的意思 >>意思就是 吧屏幕输入的字符,流向>>操作符右边的变量!<<操作符的意思就是把左边的数据 流向到左边的左边,有点方向 的意思!
返回左操作数作为结果 我理解的意思就是: 把操作符左边的结果  输送到(返回)右边,就是把左边的数据 给右边。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-2 11:07:48 From FishC Mobile | 显示全部楼层
可不可以解释一下iostream对象cin,cout的究竟含义(比如说与物理指针的联系)和操作符<<>>与函数的联系,以及在进行输入输出操作时键盘,显示器,cpu与内存,缓存间的交互作用进行深入的解释说明一下。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-2 12:03:20 | 显示全部楼层
你问的这个好像不是c++的知识  我觉着要知道计算机原理才能回答上来, 我觉着你只要知道out 和cin 是操作输入  输出的一个”功能“ 的对象就可以了 !甲鱼老师说 有时候可以不求甚解, 先把视频看看 看明白就可以了!有些问题等到你碰到了 需要这方便的知识 学完了也就明白了  ,c++ 只是一种让你操作计算机的语言,具体怎么实现要看别的书,你是需要给他下命令就可以了个人意见,不对指正!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-2 14:49:27 From FishC Mobile | 显示全部楼层
。。谢谢哦。。但如果想了解实现该读哪些具体的书呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-2 15:44:26 | 显示全部楼层
我也不知道,不过你以后要像计算机的底层方向发展吗?如果像软件方面发展 这个没必要去深入研究!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-5 09:05:48 | 显示全部楼层
少年 仔细看书上的例子
因为std::cin可以返回 "输入操作符返回其左操作数作为结果"
换句话说 cin >> a, 返回的还是一个cin. 为什么这么做呢?
因为这单这样做就可以 把原本
std::cin >> v1
std::cin >> v2
这样的两个句子 整合成一个句子 std::cin >> v1 >> v2
因为(std::cin >> v1)之后不还是一个cin么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-5 09:06:59 | 显示全部楼层
本帖最后由 ryxcaixia 于 2016-1-5 09:09 编辑

所以书上才有一句总结的话
"由于输入操作符返回其左操作数(左操作数就是cin), 我们可以将输入请求序列合并成上述一条语句"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-5 10:02:41 | 显示全部楼层
突然有豁然开朗的感觉。。真是难得给力的回复。。但还是细节上不太明白,如果返回的是ci∩,那调用它的函数是不是>>呢?令外返回一个值,一个指针等形式可以理解但返回一个对象该怎样理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-10 11:21:36 | 显示全部楼层
往后看 运算符重载你就懂了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-10 12:05:07 From FishC Mobile | 显示全部楼层
嗦咖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-10 14:53:32 From FishC Mobile | 显示全部楼层
好的。。谢谢*^_^*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-12 19:26:33 | 显示全部楼层
本帖最后由 错过会难过 于 2016-1-12 19:37 编辑

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-12 19:37:58 | 显示全部楼层
其实istream类将>>运算符重载了,
而cin是istream类的一个对象,cout是ostream的一个对象
cin>>调用的就是istream类的一个成员函数:
istream& operator>>(int& nNum);
所以cin>>的返回值是istream&  ,
istream& 的意思就是istream类的对象的引用,
为什么要这样呢?
你看看cout的例子就知道了
如:
cout<<nNum1<<nNum2;
这看似一条语句,其实是两条语句:
cout <<nNum1;
cout<<nNum2 ;
据上所知,cout是ostream的一个对象,这个对象是全局的,你包含了<iostream>这个头文件时,你就又了cout这个变量。
所以cout最终调用的是一个ostream类的成员函数
成员函数的大概实现如下:
ostream& operator<<(int nNum)
{|
        printf("%d",nNum);
        return *this
}
这样就可以输出nNum1了,为什么要返回*this呢?
因为返回类型是ostream& , 那么*this是什么?
哪个对象调用了成员函数,谁就是this。
返回*this有什么用呢?
如果重载<<运算符返回的是一个整数,那么cout<<nNum1后面就无法使用<<nNum2了
因为这个整数不是类对象,它没有重载运算符,对于整数,<<是左移操作,而<<右边却不是整数,编译器只能报错。
但如过返回类型是cout的话,cout<<nNum1是一个函数,函数处理完了就会将cout返回,那么cout<<nNum2就可以
按cout<<nNum1一样的处理方法去处理了。
同理,cin>>nNum1>>nNum2也是一样的
istream& operarot>>(int& nNum)
{
        scanf("%d",&nNum);
        return *this;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-12 20:28:15 | 显示全部楼层
C++上用了重载操作符
返回的为cin,cout对象  为什么这样做  学到了C++类那里就知道为什么了
没学过的话解释太麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表