есть
code:
class Base
{
public:
Base( int initX = 0 );
Base( const Base& b );
Base& operator=( const Base& b );
private:
int x;
};
class Derived : public Base
{
public:
Derived( int initValue );
Derived& operator=( const Derived& d );
private:
int y;
};
Base::Base( int initX )
: x( initX )
{};
Base::Base( const Base& b )
{
x = b.x;
};
Base& Base::operator=( const Base& b )
{
if( this == &b ) {
return *this;
}
x = b.x;
return *this;
}
//=============================================
Derived::Derived( int initValue )
:Base( initValue ), y( initValue )
{}
Derived& Derived::operator=( const Derived& d )
{
if( this == &d ) {
return *this;
}
static_cast<Base&>(*this) = d;
y = d.y;
return *this;
}
почему если написать так
code:
static_cast<Base&>(*this) = d;
в Derived::operator= то вызовется Base::operator=
а если тка
code:
static_cast<Base>(*this) = d;
то вызовется коструктор копирования
Редактировал sidaesc (05.11.2006 13:43)