// 1. 가상함수- 실행시간다형성
// 2. 템플릿 - 컴파일시간다형성
// 3. 오버로딩- 컴파일시간
class
{
public:
virtual void Cry() {} // 1
};
class Dog : public Animal
{
public:
virtual void Cry() {} // 2
};
template<typename T> void foo( T a ) // Cry라는함수가없다면에러가나온다.
{
a.Cry(); // 다형성-> 컴파일타임에결정된다. ( type을알고있다. )
}
void foo( Animal* p ) // Animal의자식들만받는다.
{
p->Cry(); // 1 ? 2 다형성-> 실행시간다형성( 메모리를찾아간다. )
}
Tag | C++