c++中输入输出流为什么必须重载为友元

若是将输入输出流重载为类的成员函数,形式为:

cout.operator<<(Complex &c1);

因为cout类的opetator<<函数的源码无法改变,所以无法重载为类的成员函数;

操作符重载过程中,需要用的类的成员变量,所以只是重载为全局函数,无法使用类的成员变量,所以将操作符重载为友元函数。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++输入输出流重载是一种通过自定义类的方式来实现对输入输出操作符的重载。通过重载输入输出流操作符,我们可以实现自定义类对象的输入输出操作。 在C++,输入流操作符(>>)和输出流操作符(<<)都可以被重载重载输入流操作符可以实现从标准输入或文件读取数据到自定义类对象,而重载输出流操作符可以实现将自定义类对象的数据输出到标准输出或文件。 下面是一个示例代码,演示了如何重载输入输出流操作符: ```cpp #include <iostream> using namespace std; class MyClass { private: int data; public: MyClass(int d) : data(d) {} // 重载输入流操作符 friend istream& operator>>(istream& in, MyClass& obj) { in >> obj.data; return in; } // 重载输出流操作符 friend ostream& operator<<(ostream& out, const MyClass& obj) { out << obj.data; return out; } }; int main() { MyClass obj(0); cout << "请输入一个整数:"; cin >> obj; // 使用重载的输入流操作符 cout << "输入的整数为:" << obj << endl; // 使用重载的输出流操作符 return 0; } ``` 在上面的示例代码,我们定义了一个名为`MyClass`的类,其包含一个私有成员变量`data`。通过友元函数的方式,我们分别重载了输入流操作符`>>`和输出流操作符`<<`。在`main`函数,我们创建了一个`MyClass`对象`obj`,并通过重载的输入流操作符从标准输入读取一个整数到`obj`,然后通过重载的输出流操作符将`obj`的数据输出到标准输出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值