我们来看下面这个Bug
报错1:打印整形(int)可以直接打印,打印字符(char)也可以直接打印,那是因为本身就已经给我们的内置类型准备好了一个输出运算符,可以直接用,但是我们自定义的类型没有这个输出运算符和它匹配,它不能使用这个输出运算符来打印,
报错2:也就是说在这个输出运算符的右边还不支持Stu类型
那怎么解决呢?
其实在C++中要针对⾃定义类型的变量,想使⽤ cout 和 << 来输出变量的内容, 就得对 << 这个输出运算符进⾏重载。具体代码如下:
cout的类型是ostream
重载的是<<(输出运算符),让<<支持struct Stu类型数据的打印
ostream& operator<<(ostream& os, const struct Stu& s)
{os << "名字:" << s.book << '\n';os << "语文:" << s.price << '\n';os << "数学:" << s.id << '\n';return os;
}
输出:
名字:红楼梦
语文:100
数学:1
- 这样就把s里的信息打印出来了
解释1:你会发现我们调用cout<<s,因为它最终又返回了cout,使得后面还有数据要输出的话可以输出