重载运算符>>如何输入)
时间: 2024-05-10 18:14:14 浏览: 98
重载运算符>>用于输入,一般用于输入自定义类型的对象。其函数原型如下:
```
istream& operator>>(istream& is, 类型& 对象);
```
其中,`is`是输入流对象,`类型`是自定义类型,`对象`是要输入的对象。
在函数内部,我们可以使用输入流对象对对象的成员变量进行输入操作。例如,如果我们有一个名为`Person`的类,并且想要重载运算符>>来输入`Person`类型的对象,可以这样实现:
```
class Person {
public:
string name;
int age;
friend istream& operator>>(istream& is, Person& p); // 重载运算符>>
// ...
};
istream& operator>>(istream& is, Person& p) {
is >> p.name >> p.age; // 输入对象的成员变量
return is; // 返回输入流对象
}
```
这样,我们就可以使用标准输入流对象`cin`来输入`Person`类型的对象,例如:
```
Person p;
cin >> p;
```
在输入时,输入的格式应该和对象的成员变量类型相对应,例如上例中,`name`是一个字符串类型,`age`是一个整型,所以输入时应该按照`string` `int`的顺序输入。
相关问题
c++重载运算符>>
C++中,可以通过重载运算符`>>`来实现对输入流的重载,使得我们可以使用`cin`等输入流对象来输入我们自定义的数据类型。通常的函数原型如下:
```c++
istream& operator>>(istream& is, Type& obj);
```
其中,`is`表示输入流对象,`Type`表示我们自定义的数据类型,`obj`表示我们需要输入的对象。该函数返回值为输入流对象的引用,通常返回`is`即可。
例如,我们需要重载`>>`运算符来输入一个名为`Person`的类的对象,可以这样实现:
```c++
class Person {
public:
friend istream& operator>>(istream& is, Person& p) {
is >> p.name >> p.age;
return is;
}
private:
string name;
int age;
};
```
在这里,我们使用了`std::cin`作为输入流对象,来输入`Person`类的对象`p`的`name`和`age`成员变量。返回的是输入流对象的引用`is`。
友元函数重载运算符>>
重载运算符>>的友元函数通常被用于从输入流中读取数据并将其存储到对象中。以下是一个示例:
```
class MyClass {
private:
int data;
public:
MyClass() {
data = 0;
}
friend istream& operator>>(istream& input, MyClass& obj) {
input >> obj.data;
return input;
}
};
```
在上面的代码中,我们定义了一个名为MyClass的类,并重载了运算符>>。重载函数的第一个参数是一个istream对象,它表示输入流,第二个参数是一个MyClass对象的引用,它表示要将数据存储到的对象。函数的返回类型是一个istream的引用,以便支持级联输入操作。
在函数内部,我们使用输入流对象提供的运算符>>来读取数据,并将其存储到对象的数据成员中。最后,我们返回输入流对象的引用,以便支持级联输入操作。
使用重载运算符>>的友元函数,可以方便地从输入流中读取数据并将其存储到对象中。例如,我们可以使用以下语句从标准输入流中读取一个整数并将其存储到一个MyClass对象中:
```
MyClass obj;
cin >> obj;
```
阅读全文