C ++: Czy działają konstruktory kopii polimorficznych?

Rozważać:

<code>class A
{
public:
    A( int val ) : m_ValA( val ) {}
    A( const A& rhs ) {}
    int m_ValA;
};

class B : public A
{
public:
    B( int val4A, int val4B ) : A( val4A ), m_ValB( val4B ) {}
    B( const B& rhs ) : A( rhs ), m_ValB( rhs.m_ValB ) {}
    int m_ValB;
};

int main()
{
    A* b1 = new B( 1, 2 );
    A* b2 = new A( *b1 ); // ERROR...but what if it could work?
    return 0;
}
</code>

Czy C ++ zostanie złamany, jeśli „nowy A (b1) „był w stanie rozwiązać nową kopię B i zwrócić A?

Czy byłoby to nawet przydatne?

questionAnswers(6)

yourAnswerToTheQuestion