21xrx.com
2024-11-22 03:17:07 Friday
登录
文章检索 我的文章 写文章
如何使用友元函数实现C++的输入输出重载
2023-07-05 06:44:01 深夜i     --     --
友元函数 C++ 输入输出 重载

友元函数是C++中一个很重要的概念,它可以访问类的私有成员和保护成员,而C++中的输入输出重载则是指为类构造数据输入(>>)和数据输出(<<)操作符。使用友元函数可以方便地实现C++的输入输出重载,下面就将教大家如何使用友元函数实现C++的输入输出重载。

首先,在类的声明中需要声明友元函数:


class MyClass {

public:

  friend istream& operator>>(istream& in, MyClass& obj);

  friend ostream& operator<<(ostream& out, const MyClass& obj);

private:

  int num;

  string name;

};

在这里,我们定义了一个名为MyClass的类,并在其中声明了重载运算符<<和>>的友元函数。在这个类中,有两个私有成员,分别是一个整数num和一个字符串name。

在其中,operator>>函数用于实现输入运算符的输入功能,它将数据从输入流中读取,并存储在MyClass类的对象中。特别注意的是,这个函数返回的值必须是输入流对象,在这个例子中它是istream&类型。

至于operator<<函数,它用于实现输出运算符的输出功能,将MyClass的对象输出到输出流中。这个函数返回的值必须是输出流对象,在这个例子中是ostream&类型。

然后,我们需要在类的实现文件中实现这两个友元函数:


istream& operator>>(istream& in, MyClass& obj)

  in >> obj.num >> obj.name;

  return in;

ostream& operator<<(ostream& out, const MyClass& obj)

  out << obj.num << " " << obj.name << endl;

  return out;

在上述代码中,我们实现了operator>>和operator<<函数。operator>>函数从输入流in中读取num和name,然后将其存储在MyClass的对象obj中。而operator<<函数则是将MyClass对象中的num和name输出到输出流out中。

最后,我们来看一下如何使用这些函数:


int main()

  MyClass obj;

  cout << "请输入num和name:" << endl;

  cin >> obj;

  cout << "您输入的信息是:" << endl;

  cout << obj << endl;

  return 0;

在上面的代码中,我们创建了一个名为obj的MyClass对象,然后使用输入运算符>>从控制台读取num和name。最后,我们又使用输出运算符<<输出obj中的num和name,从而完成了C++的输入输出重载。

总之,使用友元函数可以方便地实现C++的输入输出重载,让代码更加简洁、易读。如果大家还有不明白的地方,可以联系我们进行讨论,我们将尽力解答。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复