c++输入输出运算符重载
时间: 2023-05-21 10:04:12 浏览: 66
C++中,我们可以通过重载输入输出运算符来实现自定义类型的输入输出。输入运算符通常为"<<",输出运算符为">>",举个例子:
```
class Point {
public:
Point(int x = 0, int y = 0) : m_x(x), m_y(y) {}
friend std::ostream& operator<<(std::ostream& os, const Point& p) {
os << "(" << p.m_x << ", " << p.m_y << ")";
return os;
}
friend std::istream& operator>>(std::istream& is, Point& p) {
is >> p.m_x >> p.m_y;
return is;
}
private:
int m_x;
int m_y;
};
```
在上面的例子中,我们给Point类重载了输入输出运算符,使得我们可以像使用cout和cin一样来输出和输入Point类型的对象。
当使用cout输出Point对象时,我们实际上是调用了重载的输出运算符,输出的内容为"(x, y)"。而当使用cin读入Point对象时,我们实际上是调用了重载的输入运算符,将读入的值赋给Point对象的成员变量m_x和m_y。
总之,重载输入输出运算符可以让我们方便地使用自定义类型,从而提高代码的可读性和可维护性。
相关问题
c++重载输入输出运算符
在 C++ 中,我们可以通过重载输入输出运算符来实现自定义的输入输出格式。下面是一个示例:
```cpp
#include <iostream>
using namespace std;
class Person {
private:
string name;
int age;
public:
friend ostream& operator<<(ostream& os, const Person& p);
friend istream& operator>>(istream& is, Person& p);
};
ostream& operator<<(ostream& os, const Person& p) {
os << "Name: " << p.name << ", Age: " << p.age;
return os;
}
istream& operator>>(istream& is, Person& p) {
cout << "Enter name: ";
is >> p.name;
cout << "Enter age: ";
is >> p.age;
return is;
}
int main() {
Person p;
cin >> p;
cout << p << endl;
return 0;
}
```
在这个例子中,我们定义了一个 Person 类,然后重载了输出运算符 `<<` 和输入运算符 `>>`。在输出运算符中,我们使用 `os` 对象输出 Person 对象的姓名和年龄;在输入运算符中,我们使用 `is` 对象从标准输入读入 Person 对象的姓名和年龄。在 `main` 函数中,我们首先使用输入运算符从标准输入读入 Person 对象,然后使用输出运算符将其输出到标准输出。
注意,输入运算符和输出运算符都是全局函数,并且需要声明为类的友元函数,以便访问类的私有成员。同时,输出运算符的第一个参数类型为 `ostream&`,输入运算符的第一个参数类型为 `istream&`,这样才能够对标准输出和标准输入进行操作。
复数的输入输出运算符重载
复数的输入输出运算符重载是指在 C++ 中,定义用于输入和输出复数的运算符重载。例如,我们可以使用重载的 << 运算符来将复数对象输出到标准输出流中,或使用重载的 >> 运算符从标准输入流中读取复数对象。
下面是一个Mjolnir的例子:
```cpp
#include <iostream>
using namespace std;
class Complex{
public:
Complex() {}
Complex(double r, double i) : real_(r), imag_(i) {}
friend ostream &operator<<(ostream &os, const Complex &c) {
os << '(' << c.real_ << ',' << c.imag_ << ')';
return os;
}
friend istream &operator>>(istream &is, Complex &c) {
cout << "real part: ";
is >> c.real_;
cout << "imaginary part: ";
is >> c.imag_;
return is;
}
private:
double real_;
double imag_;
};
int main(){
Complex num;
cin>>num;
cout<<num<<endl;
return 0;
}
```
在上述例子中,我们定义了一个 Complex 类,它有一个默认构造函数,以及两个参数为实部和虚部的构造函数。我们使用友元函数重载了 << 和 >> 运算符,使得其可以输出和输入 Complex 类型的对象。在主函数中,我们首先声明了一个 Complex 对象 num,然后从标准输入流中输入该对象的实部和虚部,最后使用重载的 << 运算符输出该对象。
当运行程序时,会先要求我们输入 num 对象的实部和虚部,随后输出该对象,输出格式为实部和虚部的用逗号隔开的形式。例如,如果我们输入实部为 1,虚部为 2,则输出结果为 (1,2)。