내가 대충 이해한 개념은
-------------------------------------------------------------------
#include <iostream>
using namespace std;
class animal
{
public:
virtual void speak()
{
cout <<\"animal의 speak() 함수 호출\"<<endl;
}
};
class dog:public animal
{
public:
void speak()
{
cout <<\"dog의 speak() 함수 호출\"<<endl;
}
};
class cat:public animal
{
public:
void speak()
{
cout <<\"cat의 speak() 함수 호출\"<<endl;
}
};
void main()
{
animal *ani; //부모클래스인 animal 클래스 포인터 호출
dog dg; //자식클래스인 dog 클래스 호출
cat ct; //자식클래스인 cat 클래스 호출
ani = &dg; //animal 클래스를 dog 클래스와 연결
ani->speak();//animal 클래스 포인터로 dog 클래스의 speak() 함수 호출
ani = &ct; //위와 상동
ani->speak();//위와 상동
}
-----------------------------------------------------------------------
이렇게 소스코드가 있다고 하면
부모클래스인 animal 에 선언된 speak() 함수를 자식클래스인 dog에서 호출해서 재정의하여 다르게 쓰고
또 다른 자식클래스인 cat에서는 또 다르게 재정의하여 써서
받는 놈마다 다르게 받아들인다.
대충 이렇게 이해하고 있는데
맞아???
몇 번 더 읽어라. 다른 책도 좀 보고 인터넷도 찾아보고. 너 주석단거 많이 틀렸다.
가상함수부터 이해하고 와라. 이런건 기본서부터 확실히 공부해야. 바로 코드 보면 안잡힌다.