C++ virtual 관련

asleea의 이미지

#include<iostream>
using namespace std;
 
class C
{
public:
	virtual string toString()
	{
		return "class C";
	}
};
 
class B : public C
{
public:
	string toString()
	{
		return "class B";
	}
};
 
 
void displayObject(C* c)
{
	cout << c->toString().data() << endl;
}
 
int main()
{
	B b;
	C c;
	displayObject(&b);
	displayObject(&c);
 
	return 0;
}

virtual 함수 관련 공부하다가 궁굼한 부분이 생겨서 글을 오리게 되었습니다.

virtual이라는 키워드가 있을때와 없을때의 내부적으로 동적이 어떻게 다르길래 결과가 다른건가요 .?

그냥 제 지식으로는 virtual이라는 키워드가 없어도 원하는 각각의 오브젝트에 맞는 string이 출력되야 될꺼 같은데

책에는 동적결합 정적결합이라는 용어가 나와있던데 설명좀 부탁드립니다.ㅜㅜ