L'opérateur d'assignation de l'héritage

Il y a ce code:

#include <iostream>

class Base {
public:
    Base(){
        std::cout << "Constructor base" << std::endl;
    }
    ~Base(){
        std::cout << "Destructor base" << std::endl;
    }
    Base& operator=(const Base& a){
        std::cout << "Assignment base" << std::endl;
    }
};

class Derived : public Base{
public:

};

int main ( int argc, char **argv ) {
    Derived p;
    Derived p2;
    p2 = p;
    return 0;
}

La sortie après la compilation par g++ 4.6:

Constructor base
Constructor base
Assignment base
Destructor base
Destructor base

Pourquoi opérateur d'affectation de la classe de base est appelé bien, il est dit que l'opérateur d'affectation n'est pas héréditaire?

OriginalL'auteur scdmb | 2012-02-06