You can use std::dynamic_cast for this.
Parent* ptr = new Child1(); if(dynamic_cast<Child1*>(ptr) != nullptr) {
Also, if you use smart pointers like std::shared_ptr , you can check this as follows:
std::shared_ptr<Parent> ptr(new Child1()); if(std::dynamic_pointer_cast<Child1>(ptr) != nullptr) {
Piotr chojnacki
source share