运算符重载<<
时间: 2023-07-08 17:15:09 浏览: 66
运算符重载<<是C++中常用的一种操作,它可以将一个对象以特定的格式输出到控制台或文件中。通常情况下,运算符重载<<会被定义为类的友元函数,以便访问类中的私有成员变量。
例如,我们可以定义一个输出复数的类,然后重载运算符<<以便以我们想要的格式输出复数。假设我们的复数类定义如下:
```
class Complex {
private:
double real;
double imag;
public:
Complex(double r, double i) : real(r), imag(i) {}
friend ostream& operator<<(ostream& os, const Complex& c);
};
```
我们可以在类定义外部重载运算符<<,并将其声明为该类的友元函数,以便访问私有成员变量:
```
ostream& operator<<(ostream& os, const Complex& c) {
os << c.real << " + " << c.imag << "i";
return os;
}
```
现在我们可以使用运算符<<将复数对象输出到控制台:
```
Complex c(3.5, 2.1);
cout << c << endl; // 输出 3.5 + 2.1i
```
这就是运算符重载<<的基本用法。
相关问题
运算符重载<<ostream &out
运算符重载<<ostream用于将对象输出到输出流中。
例如,假设我们有一个名为Person的类,其中包含姓名和年龄属性。我们可以使用运算符重载<<ostream来打印Person对象的信息:
```
class Person {
private:
string name;
int age;
public:
Person(string name, int age) {
this->name = name;
this->age = age;
}
friend ostream& operator<<(ostream& os, const Person& p) {
os << "Name: " << p.name << ", Age: " << p.age;
return os;
}
};
int main() {
Person p("John", 25);
cout << p << endl;
return 0;
}
```
在上面的代码中,我们定义了一个名为operator<<的友元函数,该函数将Person对象输出到流中。该函数的第一个参数是ostream类型的引用,表示输出流,第二个参数是const Person类型的引用,表示要输出的对象。在函数中,我们将Person对象的属性按照指定的格式输出到流中,然后返回该流。
在main函数中,我们创建了一个Person对象,并使用运算符重载<<ostream将其输出到标准输出流中。输出结果为“Name: John, Age: 25”。
如何重载运算符<<支持对象的写操作
重载运算符<<可以支持对象的写操作,具体步骤如下:
1. 在类的定义中声明运算符<<函数为友元函数。
```
class MyClass{
friend ostream& operator<<(ostream& os, const MyClass& obj);
};
```
2. 在类外定义运算符<<函数。
```
ostream& operator<<(ostream& os, const MyClass& obj){
os << "some text" << obj.someProperty << "some text";
return os;
}
```
3. 在运算符<<函数中使用ostream对象输出对象的属性或信息。
```
os << "some text" << obj.someProperty << "some text";
```
4. 在使用时,像使用cout一样使用运算符<<输出对象。
```
MyClass obj;
cout << obj;
```
运算符<<函数重载后,可以直接输出对象,输出对象的属性或信息,可以根据需要自定义。