那我现在想问到底能不能加输入输出运算符重载为类的友元函数
时间: 2023-10-06 08:08:10 浏览: 85
当然可以。输入输出运算符可以重载为类的友元函数,这样可以直接在类的对象上使用这些运算符,而不需要使用类的成员函数。
重载为类的友元函数时,输入输出运算符的函数原型如下:
```C++
// 重载输出运算符
friend ostream& operator<<(ostream& os, const 类型名& 对象名);
// 重载输入运算符
friend istream& operator>>(istream& is, 类型名& 对象名);
```
其中,`ostream` 和 `istream` 分别是输出流和输入流类型,`类型名` 指的是要进行输入输出的类的类型,`对象名` 是要进行输入输出的类的对象。重载为类的友元函数时,需要将函数声明为类的友元函数,并将其定义在类的外部,例如:
```C++
class MyClass {
public:
int num;
friend ostream& operator<<(ostream& os, const MyClass& obj);
friend istream& operator>>(istream& is, MyClass& obj);
};
ostream& operator<<(ostream& os, const MyClass& obj) {
os << "MyClass对象的成员变量值为:" << obj.num << endl;
return os;
}
istream& operator>>(istream& is, MyClass& obj) {
cout << "请输入MyClass对象的成员变量值:";
is >> obj.num;
return is;
}
```
这样,就可以通过以下方式在类的对象上使用输入输出运算符:
```C++
MyClass obj1, obj2;
cout << obj1; // 输出 obj1 对象的成员变量值
cin >> obj2; // 输入 obj2 对象的成员变量值
```
阅读全文