我与朋友功能试验并写入以下内容:COUT如何调用类的私有成员
#include <iostream>
using namespace std;
class Comp {
private:
double r,i;
public:
Comp(){
r = 10.5;
i = 25.1;
}
friend ostream& operator <<(ostream& write, Comp & comp);
};
ostream& operator << (ostream& write, Comp& comp){
write << comp.r << ": " << comp.i;
return write;
}
int main(int argc, char const *argv[]) {
/* code */
Comp comp;
cout << comp;
return 0;
}
这样一个问题出现了(因为我不是在C专家++刚开始学习C++),之所以COUT可以访问Comp类的私有成员。因为cout没有在类中声明,所以它不是类的朋友。那么什么机制允许通过作为ostream类的对象的cout来访问类的私有成员。
基本上我想问的是其他类的对象(ostream类cout的对象)如何访问其他类Comp的私有变量,而不是该类的朋友或成员。 谢谢。
cout << comp;'为'Comp'调用你的重载'operator <<'。由于该功能是“Comp”的“好友”,因此可以访问私有成员。尝试评论课堂中的“朋友”一行,看看会发生什么。 – Unimportant