C++输入输出运算符重载注意事项
2013-04-10 09:26
197 查看
1.输出运算符重载声明方法:
因为ostream对象是不支持复制的,所以第一个参数和返回的参数均是引用。第二个参数是操作对象,为了避免传入对象时发生对象的复制(即调用复制构造函数),这里也使用引用。又为了避免修改这个对象,所以使用const限定。
2.输入运算符重载声明方法:
同上理,istream是不支持复制的,所以这里均使用引用,第二个参数使用引用也是为了避免复制发生。
全局的观察上述两个声明,可以发现,每个参数和返回都是引用,这个原因上面已经解释了。
3.输出运算符重载定义方法:
4.下面是一个代码示例:
ostream& operator<< (ostream &, const Test &);
因为ostream对象是不支持复制的,所以第一个参数和返回的参数均是引用。第二个参数是操作对象,为了避免传入对象时发生对象的复制(即调用复制构造函数),这里也使用引用。又为了避免修改这个对象,所以使用const限定。
2.输入运算符重载声明方法:
istream& operator>> (istream &, Test &);
同上理,istream是不支持复制的,所以这里均使用引用,第二个参数使用引用也是为了避免复制发生。
全局的观察上述两个声明,可以发现,每个参数和返回都是引用,这个原因上面已经解释了。
3.输出运算符重载定义方法:
ostream& operator<< (ostream &out, const Test &test){ out << "value = " << test.value << endl; return out; }可以看到,函数体内用来做输出的是第一个形参out,而不是cout,这里要搞清楚了。返回的依旧是一个ostream,这样就可以接着输出了,才支持下面的使用方法:
cout << test << endl;输出了test后紧接着输出endl,如果不返回ostream对象,这样的使用就不成立。
4.下面是一个代码示例:
#include <iostream.h>
//using namespace std;
class Test{
public:
Test(){value = 0;}
Test(const Test&){}
Test operator= (const Test&){}
~Test(){}
friend ostream& operator<< (ostream &, const Test &);
friend istream& operator>> (istream &, Test &);
//private:
int value;
};
ostream& operator<< (ostream &out, const Test &test){ out << "value = " << test.value << endl; return out; }
istream& operator>> (istream &in, Test &test){
cout << "input value:";
in >> test.value;
return in;
}
void main()
{
Test test;
cin >> test;
cout << test << endl;
}
相关文章推荐
- C++_运算符重载的注意事项
- C++_运算符重载的注意事项
- C++中的运算符重载注意事项
- C++输入输出注意事项总结
- C++容器的注意事项
- C++ auto_ptr智能指针的详细用法和注意事项
- C++中的强制转换注意事项
- c++全局变量使用中的一些注意事项
- C++头文件注意事项
- 64位平台C/C++开发注意事项
- 用C++进行跨平台和可移植开发的注意事项
- C++随笔(指针和引用的使用注意事项)
- C++中typename关键字的使用方法和注意事项
- 关于c++的一些注意事项
- C++强制类型转换const_cast()注意事项
- C++静态成员注意事项
- Android NDK C++开发注意事项总结
- C++调用Matlab 注意事项
- C# 调用带有复杂参数的C++ ,delphi dll 注意事项备注。(C++ dll 怎么回调C# 程序,参数怎么写?)
- c语言及c++若干注意事项(逐步添加)