C++中,out<<表示什么意思,数据类型是ostream

ostream&operator<<(ostream&out,constpeople&r){out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<... ostream &operator<<(ostream&out,const people&r)
{
out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<endl;
return out;
}

我只知道cout<< 这是输出 ,但是这个out<<是什么?能解释下这语句吗
展开
 我来答
Iinux
推荐于2017-11-26 · TA获得超过327个赞
知道答主
回答量:67
采纳率:100%
帮助的人:75.3万
展开全部
关于C++中的重载,对于输出流的重载。
ostream &operator<<(ostream&out,const people&r);

你这个算是标准写法了:
1)为了支持连续,输出必须返回一个ostream的引用。如:cout<<a<<b;连续输出。
2)也只能返回一个ostream的引用,因为ostream类只有一个对象就是cout,ostream类是不让你自己定义对象的,该类将构造函数、拷贝构造函数,全部声明为私有的了。返回对象会调用拷贝构造函数,调用失败,报错。
3)operator<<,重载输出需要两个参数,第一个参数必须是ostream &引用。道理同2),第二个参数为一个对象的引用或指针,可以使const也可以不是const。当然你也可以将这两个参数写反,不过你觉得那样有意义吗?继续往下看。
4)假如我们已经重载了Test类的cout是不是?那么我们就可以在main函数里面这么用:
int main()
{
Test a("name1",16);
Test b("name2",19);
cout<<a<<b;

return 0;
}
是不是可以这么用?
那么我们将cout显示化,看它是如何调用的:
cout<<a;等价于如下:
operator(cout,a);
5)从4)我们可以很明显的看到,其实你的ostream& out其实就是主函数传过来的cout,是不是?
好了,如果你将operator<<()里面的两个参数反着写,是不是要这样了?
operator(a,cout);?
如果这样写,那你隐式调用的时候就必须这样了:a<<cout你觉得这种写法很那个啥吗?而且这样的写法也只能每次输出一个,b<<a<<cout这样的写法也不支持。
追问
但是我这个例子中,并没有输出任何东西啊,能不能留个QQ我把例子传给你看看,只有几行而已
追答
80083324
devMaker
2014-08-20
知道答主
回答量:8
采纳率:0%
帮助的人:7.4万
展开全部
这是重载运算符的语法。

效果是:你用 << 来输出这个类的对象时,会输出out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<endl;

ostream是一个数据输出流,out<<就是输出,cout也是一种输出,只不过cout是系统的标准输出。

不知道有没讲清楚= =
更多追问追答
追问
还是不懂啊,你是说out是输出??但是程序运行起来,根本没有输出啊
追答
你这个应该是一个类里面的一段吧,你需要在外面调用它。

比如

cout << a;//a是people类的一个对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
258369甘世杰
2014-08-20 · TA获得超过129个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:58.6万
展开全部
应该是cout吧,除非你是用宏定义看可以不
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式