C++的友元函数跟重载函数的问题

#include using namespace std; class A { public: A operator+(A s); friend istream & operator>>(istream & in,A & p); friend ostream & operator<<(ostream & out,A & p); private: int a[3][3]; }; A A::operator+(A s) { A temp; int i=0,j=0; for(;i<=2;i++) { for(j=0;j<=2;j++) {temp.a[i][j]=a[i][j]+s.a[i][j];}} return temp; } istream & operator>>(istream & in,A & p) { cout<<"请输入该矩阵的值:"< int i=0,j=0; for(;i<=2;i++) {for(j=0;j<=2;j++) in>>p.a[i][j];} return in; } ostream & operator<<(ostream & out,A & p) { out<<"以上两矩阵相加的结果为:"; int i=0,j=0; for(;i<=2;i++) {out< for(j=0;j<=2;j++) out< } return out; } int main() { A m1; A m2; cin>>m1; cin>>m2; cout<<(m1+m2)< return 0; } 请问一下 这里的重载输入输出运算符为什么要为友元函数? 加号运算也涉及到两个对象m1,m2的私有数据成员,那为什么不用设为友元呢? 谢谢大家

第1个回答  2020-12-22
这里,
友元
和重载两种方法都可以实现预期的功能。C++
primer
plus这本书讲了很多
相似回答
大家正在搜