提示信息

C++重载>>和<<

彼岸花 已关注

在C++中,可以使用重载运算符来定义输入流运算符(>>)和输出流运算符(<<)的行为。

重载输入流运算符(>>)
重载输入流运算符(>>)可以用于从输入流中读取数据并赋值给对象的成员。它通常用于实现从标准输入(cin)读取数据。

下面是一个重载输入流运算符(>>)的示例:

  1. class MyClass {
  2. public:
  3. int a;
  4. double b;
  5. friend istream& operator>>(istream& input, MyClass& obj) {
  6. input >> obj.a >> obj.b;
  7. return input;
  8. }
  9. };
  10. int main() {
  11. MyClass obj;
  12. cin >> obj;
  13. return 0;
  14. }

在上面的示例中,重载的输入流运算符的函数签名为istream& operator>>(istream& input, MyClass& obj)。它需要两个参数:输入流input和一个要被赋值的MyClass对象引用obj

在函数体内部,可以使用输入流对象input的提取运算符(>>)从输入流中读取数据,并将其赋值给obj的成员ab

重载输出流运算符(<<)
重载输出流运算符(<<)可以用于将对象的成员值输出到输出流。它通常用于将数据输出到标准输出(cout)。

下面是一个重载输出流运算符(<<)的示例:

  1. class MyClass {
  2. public:
  3. int a;
  4. double b;
  5. friend ostream& operator<<(ostream& output, const MyClass& obj) {
  6. output << obj.a << " " << obj.b;
  7. return output;
  8. }
  9. };
  10. int main() {
  11. MyClass obj;
  12. obj.a = 10;
  13. obj.b = 3.14;
  14. cout << obj;
  15. return 0;
  16. }

在上面的示例中,重载的输出流运算符的函数签名为ostream& operator<<(ostream& output, const MyClass& obj)。它需要两个参数:输出流output和一个要被输出的MyClass对象的常量引用obj

在函数体内部,可以使用输出流对象output的插入运算符(<<)将obj的成员ab插入到输出流中。

限制和注意事项:
- 重载输入流运算符(>>)通常返回输入流对象的引用(istream&),以实现多次连续的输入操作。
- 重载输出流运算符(<<)通常返回输出流对象的引用(ostream&),以实现多次连续的输出操作。
- 为了进行输入和输出流的操作,需要包含<iostream>头文件。
- 重载输入流运算符(>>)和输出流运算符(<<)通常定义为类的友元函数(friend),以便访问私有成员。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
彼岸花 关注 已关注

最近一次登录:2023-10-09 11:51:04   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图