派生类中重载>>
时间: 2023-08-07 07:15:08 浏览: 45
派生类中可以重载>>运算符,来实现从输入流中读取派生类对象的数据。
例如,如果有一个基类Animal和一个派生类Cat,可以这样重载:
```c++
class Animal {
public:
string name;
virtual void speak() = 0;
friend istream& operator>>(istream& in, Animal& animal);
};
class Cat : public Animal {
public:
void speak() override {
cout << "Meow!" << endl;
}
friend istream& operator>>(istream& in, Cat& cat);
};
istream& operator>>(istream& in, Animal& animal) {
in >> animal.name;
return in;
}
istream& operator>>(istream& in, Cat& cat) {
in >> cat.name;
return in;
}
```
然后可以这样使用:
```c++
int main() {
Animal* animal = new Cat();
cin >> *animal;
animal->speak();
delete animal;
return 0;
}
```
在输入时,可以输入派生类对象的所有成员变量,因为基类的>>运算符可以读取派生类对象的共有成员变量。