Перегрузка операторов ввода/вывода при наследовании

Есть базовый класс Computer и производный класс Laptop:

class Computer
{
private:
    string model;
};

class Laptop : Computer
{
private:
    string typeOfLaptop;
};

Каким образом следует перегрузить операторы ввода/вывода? Я могу сделать это задав параметры базового класса типом protected и реализовать дружественные функции.

class Computer
{
protected:
    string model;
};

class Laptop : public Computer
{
private:
    string typeOfLaptop;

public:
    friend istream& operator>>(istream& in, Laptop& obj);
    friend ostream& operator<<(ostream& os, const Laptop& obj);
};

istream& operator>>(istream& in, Laptop& obj)
{
    in >> obj.model >> obj.typeOfLaptop;
    return in;
}

ostream& operator<<(ostream& os, const Laptop& obj)
{
    return os << obj.model << " " << obj.typeOfLaptop;
}

Но я думаю, что это не совсем верно. Может быть есть способ получше?


Ответы (0 шт):