¿¹Á¦

#include <typeinfo>

class Shape{
    public:
        virtual ~Shape()=0;
};


class Circle : public Shape{};
class Square :
public Shape{};

void function(const Shape * s)
{
if (typeid(*s)==
typeid(Circle))
{
//do something for Circle
}
else if (typeid(*s)==typeid(Square))
{
//do something for Square
}
}

¼Ö·ç¼Ç
°íÀ¯ ½Äº°ÀÚ¸¦ ¸®ÅÏÇÏ´Â virtual classOf() ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Ŭ·¡½º¸¦ ±¸ÇöÇϰųª µ¿Àû ij½ºÆ®ÀÇ ¼º°øÀ» Å×½ºÆ®ÇϽʽÿÀ.

class Shape{
    public:
        virtual ~Shape()=0;
};

class Circle :
public Shape{};
class Square :
public Shape{};

void function(const Shape * s)
{
Shape *sh = const_cast<Shape*> (s);

if (dynamic_cast<Circle *>(sh)
)
{
//do something for Circle
}
else if (
dynamic_cast<Square *>(sh) )
{
//do something for Square
}
}