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?