重载输入输出运算符和对象数据的输入输出

需积分: 9 22 下载量 179 浏览量 更新于2024-01-05 收藏 8.66MB PPT 举报
重载输入(提取)和输出(插入)运算符是谭浩强经典C++教材中的一个重要主题。在该教材中给出了一个类A的实例,其成员变量为两个float类型的数值x和y。该类还包含了构造函数、Set和Show函数用于设置和展示x和y的值。教材中的示例代码在main函数中创建了一个A类的对象a,并通过Set函数设置了其x和y的值,然后调用Show函数展示了a对象的值。 接下来,教材提到了重载输入和输出运算符的问题。在示例代码中,希望能够通过cin和cout来直接输入和输出A类的对象数据,而不是使用Set和Show函数。然而,教材指出对象不能直接输入和输出,需要通过重载输入和输出运算符来实现。 在C++中,为了实现重载输入和输出运算符,需要借助于运算符重载的特性。通过重载>>运算符,可以实现从输入流中提取数据到A类的对象中,即输入对象数据。通过重载<<运算符,可以将A类的对象数据插入到输出流中,即输出对象数据。 具体实现重载输入和输出运算符的方法是在A类中声明为友元函数。友元函数的定义在A类的外部,在定义时需要加上A类的作用域限定符。 重载输入运算符的定义如下: ```cpp istream& operator>>(istream& in, A& obj){ in >> obj.x >> obj.y; return in; } ``` 该函数接受一个istream对象和一个A类的对象作为参数,从输入流中提取两个float类型的数值到A类的对象的x和y中,并返回输入流对象。 重载输出运算符的定义如下: ```cpp ostream& operator<<(ostream& out, const A& obj){ out << obj.x << '\t' << obj.y; return out; } ``` 该函数接受一个ostream对象和一个const的A类对象作为参数,将A类对象的x和y的值插入到输出流中,并返回输出流对象。 通过重载输入和输出运算符,就能够实现对A类对象的直接输入和输出。在示例代码中,可以使用cin>>a来从输入流中提取数据到对象a中,然后使用cout<<a来将对象a的数据插入到输出流中。 总结起来,重载输入和输出运算符是谭浩强经典C++教材中的一个重要内容,它允许我们通过cin和cout来实现对类对象的直接输入和输出。通过在类中声明友元函数,然后在类外部定义和实现重载运算符的函数,我们可以灵活地控制输入和输出的格式和行为。这种技术在实际的程序设计中非常有用,能够提高代码的可读性和可维护性。