<pre name="code" class="cpp"> ostream operator<<(ostream& os,fraction & s )
{
os<<s.above;
return os;
}
VS2010会报错:
c:\应用软件\visualstudio\vc\include\ostream(604): error C2248: “std::basic_ios<_Elem,_Traits>::basic_ios”: 无法访问 private 成员(在“std::basic_ios<_Elem,_Traits>”类中声明)
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
原因是流类的复制构造函数是私有的,不能被调用,而我们都知道当形参或返回值为对象类型时都要调用对象的复制构造函数进行对象的拷贝。
如果需要传递或返回IO对象,则必须传递或返回只想该对象的指针或引用。