istream >> ostream << Operator Overloading with * Pointer

我只是一个虾纸丫 提交于 2019-12-08 01:46:24

问题


How would I overload the >> and << operators if they are dealing with pointers?

in header:

friend std::istream& operator >>( std::istream& ins, Classname* & e);
friend std::ostream& operator <<( std::ostream& outs, const Classname * e);

in cpp:

std::ostream& operator <<( std::ostream& outs, const Classname * e)
{   // what do I do here?
return outs;
}
std::istream& operator >>( std::istream& ins, Classname* & e){
// what do I do here?
    return ins;
}

回答1:


It depends on what is in the class Classname. If for example you have:

class Classname {
//...
private:
  int a;
};

.. then you might do:

std::ostream& operator <<( std::ostream& outs, const Classname * e)
{  
  outs << e->a;
  return outs;
}
std::istream& operator >>( std::istream& ins, Classname* & e){
    ins >> e->a;
    return ins;
}

The idea being that the << and >> operators ideally should mirror each other - so for example you can make use of them for serializing and deserializing your instances.



来源:https://stackoverflow.com/questions/6105635/istream-ostream-operator-overloading-with-pointer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!