: virtual 키워드를 붙임으로써 파생클래스에서 부모의 멤버함수를 재정의해
사용을 가능게 하는 함수.
: 가상함수가 하나라도 있는 클래스를 말하고, 이때 v-table 포인터가 만들어진다.
: 이거는 확실히 인지하고 있따.
부모클래스인 A에서 가상함수 포인터라는 놈이 만들어지고 그친구가
B -> C 의 hello 함수를 거쳐오면서 C의 hello를 호출하게 된다.
부모 클래스 -> 파생클래스 / 이런식으로 진행된다.
#include <iostream>
#include <string>
#include <vector>
class A {
public :
A()
{
std::cout << "생성자 A" << std::endl;
}
virtual void hello()
{
std::cout << "A" << std::endl;
}
};
class B : public A
{
public:
B()
{
std::cout << "생성자 B" << std::endl;
}
void hello()
{
std::cout << "B" << std::endl;
}
};
class C : public B
{
public:
C()
{
std::cout << "생성자 C" << std::endl;
}
void hello()
{
std::cout << "C" << std::endl;
}
};
int main()
{
B *object = new C;
object->hello();
return 0;
}