左移操作符重载

来源:互联网 发布:数控铣床编程四叶草 编辑:程序博客网 时间:2024/05/29 07:37

当要用到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;所以编译器会报错;





原创粉丝点击