/*Orion Lawlor's Simple C++ Examples, olawlor@acm.org
Shows how to use dynamic_cast.
*/
#include <iostream>

class parent {
public:
	virtual void fn(void) {}
};
class child:public parent { };

bool is_a_child(parent *p) {
	child *c=dynamic_cast<child *>(p);
	if (c==0) return false;
	else return true;
}

int main()
{
	parent *p1=new parent;
	parent *p2=new child;
	if (is_a_child(p1)) std::cout<<"p1 is a child\n";
	if (is_a_child(p2)) std::cout<<"p2 is a child\n";
	
	return 0;
}
/*<@>
<@> ******** Program output: ********
<@> p2 is a child
<@> */
