Производные классы косвенно наследуют оператор присваивания базы?

Я пытаюсь понять это поведение, но, похоже, не понимаю. Пожалуйста, посмотрите этот код:

#include <iostream>
using namespace std;

class Base
{
public:
    void operator=(const Base& rf)
    {
        cout << "base operator=" << endl;
        this->y = rf.y;
    }
    int y;
    Base() : y(100) { }
};

class Derived : public Base
{
public:
    int x;
    Derived() : x(100) { }
};

int main()
{
    Derived test;
    Derived test2;
    test2.x = 0;
    test2.y = 0;
    test.operator=(test2); // operator auto-generated for derived class but...
    cout << test.x << endl << test.y << endl;
    cin.ignore();
    return 0;
}

ПРОГРАММНЫЙ ВЫХОД:

> base operator=
>  0
>  0

Теперь я в замешательстве: правило гласит, что производный класс никогда не наследует оператор присвоения, а создает собственныйoperator= Однако в этом примере базыoperator= вызывается в производном классе.

Во-вторых, я смог явно вызвать оператор присвоения для производного класса, который, в свою очередь, явно не определен в производном классе.

Теперь, если я правильно понимаю, это означает, что любой оператор определенной пользователем базы всегда вызывается в производном классе?

Ответы на вопрос(4)

Ваш ответ на вопрос