cout是全局的ostream对象 cin是全局的istream对象 内置类型如int,double类型可以直接使用cout和cin是因为库里面已经写好了运算符重载 对于自定义类型使用cout和cin需要自己写运算符的重载
cout<< cin>> 注意事项:
-
cout和cin是作为运算符重载的第一个参数的,所以如果把运算符重载定义在类的内部,是不可以的因为在类里面默认第一个参数是隐藏的this,我们无法更改 -
虽然理论上我们可以写在ostream类的内部和istream类的内部 但是,这两个类是标准库中的类,我们无法访问 所以重载cout和cin只能写在类的外部 -
写在类的外部又必须涉及到访问类的成员,成员一般是私有的,所以需要把重载的cout和cin声明为友元 -
cout和cin经常调用,我们设置为内联 -
为支持连续调用cout << xx << xx ,需要返回值,返回值为cout 和 cin -
cout不需要修改成员,第二个参数设置为const 对象的引用 -
cin需要修改成员,第二个参数为 对象的引用
class A{
public:
A(){}
~A(){}
friend ostream& operator<<(ostream& out , const A& obj);
friend istream& operator>>(istream& in , A& obj);
private:
int a;
}
inline ostream& operator<<(ostream& out,const A& obj)
{
out<<obj.a<<endl;
}
inline istream& operator>>(istream& in,A& obj)
{
in>>obj.a;
}
|