原文链接:http://blog.csdn.net/lyh__521/article/details/49601489
重载输入输出运算符
我们平时可以用流 std::cout<<str<<n ; std::cin>>str>>n ; 输出、输入字符串和整型等内置类型的值。但是对于我们自定义的类,比如 Student 类,却不能直接通过 cout<<Student 或 cin>>Student 这样的形式来输出类的内容或给类赋值。怎么办呢?我们可以通过重载输出、输入运算符,让自定义的类也支持这样的操作。
重载输出运算符
- 通常情况下,输出运算符的第一个形参是一个非常量的ostream 对象的引用。(非常量是因为向流写入内容会改变其状态; 用引用是因为流对象不支持复制)
- 第二个参数一般来说是一个常量的引用,该常量是我们想要输出的类类型。(用引用是因为我们希望避免复制实参; 用常量是因为通常打印对象的时候不需要改变对象的内容)
- 输出运算符应尽量减少格式化的操作,尤其是换行符,这样有利于用户对输出格式的控制。
-
一般会声明为友元函数(friend),这样输出运算符函数才能使用类的私有成员
-
输入、输出运算符都必须是非成员函数。否则,他们的左侧运算对象将是我们的类的一个对象。