Мне кажется, что производный класс не наследуется Оператор присваивания базового класса
, если оператор производного класса наследует назначение Базового класса, пожалуйста, вы можете объяснить следующий примерОператор присвоения базового класса наследуемого класса?
В следующем коде я переопределяя оператор базового класса = в 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;
}
Это дает выход
вызову Assignment оп Erator в базе
Я переписан оператор базового класса = в производный класс, так что, если производный класс наследует базовый класс оператор =, то он должен быть получить переопределен оператором = (что я написал в производном классе), и теперь Derived class default operator = должен вызывать переопределенную версию, а не оператор базового класса =.
Мне интересно: Это объяснение кажется мне неправильным, утверждает, что мы ожидаем, что поведение Амита ожидается, и не объяснит наблюдаемое поведение. Если я, конечно, не ошибаюсь. Почему упреки? –