你这不是加了friend关键字了吗,那不是重载为类的友元函数,也就是全局函数了吗
时间: 2024-03-21 12:39:18 浏览: 51
非常抱歉,您是对的。输入输出运算符重载为类的成员函数时,需要将其声明为类的成员函数并使用 `friend` 关键字,这使得该函数可以访问类的私有成员。但是,这样的函数实际上是类的友元函数,而不是成员函数。因此,它们被称为友元运算符函数。
友元函数与类的成员函数有所不同,它们不属于类的成员函数,因此在定义时不需要使用类名限定符。另外,友元函数的第一个参数通常是输出流或输入流对象,第二个参数是要进行输入输出的类的对象。
下面是一个将输入输出运算符重载为类的友元函数的示例:
```C++
class MyClass {
public:
int num;
friend ostream& operator<<(ostream& os, const MyClass& obj) {
os << "MyClass对象的成员变量值为:" << obj.num << endl;
return os;
}
friend istream& operator>>(istream& is, MyClass& obj) {
cout << "请输入MyClass对象的成员变量值:";
is >> obj.num;
return is;
}
};
int main() {
MyClass obj1, obj2;
cout << obj1; // 输出 obj1 对象的成员变量值
cin >> obj2; // 输入 obj2 对象的成员变量值
}
```
在这个例子中,我们将输入输出运算符重载为类的友元函数,使得可以在类的对象上直接使用这些运算符。
阅读全文