当要用到cout<<类时,编译器会报错,此时就需要程序员自己对左移操作符进行重载了:
左移操作符重载的实例:
class operatorcg{
friend ostream& operator<< (ostream& output, operatorcg& oop);
private:
int a;
int b;
public:
void SetValue(int a, int b)
{
this->a = a;
this->b = b;
}
};
ostream& operator<< (ostream& output, operatorcg& oop)
{
output << "oop.a=" << oop.a << " b=" << oop.b << endl;
return output;
}
int main(void)
{
operatorcg oop;
oop.SetValue(10, 15);
cout << oop;
system("pause");
return 0;
}左移操作符重载:
void operator<< (ostream& output, operatorcg& oop)
{
output << "oop.a=" << oop.a << " b=" << oop.b << endl;
//return output;
}这种重载方式无法链式输出,
只是用与cout << oop这种输出一个对象的情况,要是输出多个对象就必须对操作符重载函数进行相应的改变;
ostream& operator<< (ostream& output, operatorcg& oop)
{
output << "oop.a=" << oop.a << " b=" << oop.b << endl;
return output;
}这与结论“函数返回值当左值必须要返回一个引用”有关
例如:cout<<oop1<<oop2<<endl;
如果用第一种则变形成cout<<oop1<<void<<endl;所以编译器会报错;
本文介绍如何在C++中为自定义类重载左移操作符(<<),实现类对象通过cout流输出的功能,并探讨了重载函数返回类型的重要性,以确保能够连续输出多个对象。
3813

被折叠的 条评论
为什么被折叠?



