У меня есть класс B с набором конструкторов и оператором присваивания.
class B
{
public:
B();
B(const string & s);
B(const B & b){(*this) = b;};
B & operator= (const B & b);
private:
virtual void foo();
// and other private member variables and functions
}
Я хочу создать наследующий класс D, который просто переопределит функцию foo(), и никаких других изменений не потребуется.
Но я хочу, чтобы D имел один и тот же набор конструкторов, включая конструктор копирования и оператор присваивания, как B:
D(const D & d){(*this) = d;};
D & operator= (const D & d);
Нужно ли переписывать все из них в D или есть способ использовать конструкторы и оператор B? Я хотел бы особо избегать переписывать оператор присваивания, потому что он должен получить доступ ко всем переменным частного члена B.