У меня есть простая структура наследования:
- База <- Derived1 </li>
- База <- Derived2 </li>
Я хочу перегрузить << и>> операторы для ввода и печати данных в классах объектов Derived1
и Derived2
в качестве ссылки на класс Base
.
Могу ли я объявить некоторые виртуальные функции? Например:
virtual std::ostream& operator<<(std::ostream& os, const Base& obj) = 0;
virtual std::istream& operator>>(std::istream& is, Base& obj) = 0;
в моем классе Base
и переопределить их в классах Derived1
и Derived2
?
Я хочу сделать что-то подобное:
std::vector<Base&> a;
... push reference to Derived1 and Derived2 objects ...
for (auto i = a.begin(); i != a.end(); ++i) std::cin >> (*i);
for (auto i = a.begin(); i != a.end(); ++i) std::cout << (*i);