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<<是什么?能解释下这语句吗 展开
{
out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<endl;
return out;
}
我只知道cout<< 这是输出 ,但是这个out<<是什么?能解释下这语句吗 展开
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这样的写法也不支持。
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
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
这是重载运算符的语法。
效果是:你用 << 来输出这个类的对象时,会输出out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<endl;
ostream是一个数据输出流,out<<就是输出,cout也是一种输出,只不过cout是系统的标准输出。
不知道有没讲清楚= =
效果是:你用 << 来输出这个类的对象时,会输出out<<r.GetName()<<"的年龄为:"<<r.GetAge()<<endl;
ostream是一个数据输出流,out<<就是输出,cout也是一种输出,只不过cout是系统的标准输出。
不知道有没讲清楚= =
更多追问追答
追问
还是不懂啊,你是说out是输出??但是程序运行起来,根本没有输出啊
追答
你这个应该是一个类里面的一段吧,你需要在外面调用它。
比如
cout << a;//a是people类的一个对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是cout吧,除非你是用宏定义看可以不
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询