dynamic_cast -.
nullptr, . , :
triangle* R = dynamic_cast<triangle*>(X);
if(R) {
cout << "Diagonale = " << R->GetDiag() << '\n';
};
: if-, if-statement:
if(triangle* R = dynamic_cast<triangle*>(X)) {
cout << "Diagonale = " << R->GetDiag() << '\n';
};
if(rectangle* R = ...) {...};
, multiple subclasses GetDiag, poligon diagonal. diagonal GetDiag polygon:
class polygon {
};
class diagonal {
virtual double GetDiag() = 0;
};
class triangle : public polygon, public diagonal {
};
, , dynamic_cast, diagonal. , poligon diagonal, .
polygon diagonal
| | |
| |_____________|
| |
| |
rectangle triangle