Мне кажется, что производный класс не наследует оператор присваивания базового класса
если производный класс наследует оператор присваивания базового класса, не могли бы вы объяснить следующий пример
В следующем коде я переопределяю оператор базового класса = в Derived, так что оператор присваивания производного класса по умолчанию вызывает перегруженный оператор =
#include <iostream>
using namespace std;
class Base
{
public:
Base(int lx = 0):x(lx)
{
}
virtual Base& operator=( const Base &rhs)
{
cout << "calling Assignment operator in Base" << endl;
return *this;
}
private:
int x;
};
class Derived : public Base
{
public:
Derived(int lx, int ly): Base(lx),y(ly)
{
}
Base& operator=(const Base &rhs)
{
cout << "Assignment operator in Derived"<< endl;
return *this;
}
private:
int y;
};
int main()
{
Derived d1(10,20);
Derived d2(30,40);
d1 = d2;
}
Это дает результат
вызов оператора присваивания в Base
Я переписал оператор базового класса = в производный класс, поэтому, если производный класс наследует оператор базового класса =, тогда он должен быть переопределен оператором = (который я написал в производном классе), и теперь оператор производного класса по умолчанию должен вызывать = переопределенной версии, а не из базового класса operator=.