Наследование оператора присваивания

Вот этот код:

#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;
}

Вывод после компиляции g ++ 4.6:

Constructor base
Constructor base
Assignment base
Destructor base
Destructor base

Почему оператор присваивания базового класса вызывается, хотя сказано этот оператор присваивания не наследуется?

19
задан scdmb 6 February 2012 в 14:19
поделиться