When you declare a function as virtual? code example

Example: virtual function c++

#include <iostream>
#include <string>

class Entity {
public:
  virtual std::string getName();
  void print(); 
};

virtual std::string Entity::getName() {
	return "Entity";
}

void Entity::print() {
	std::cout << "This is the base class" << std::endl;
}

class Player : public Entity {
  std::string m_name;
public:
	Player(const std::string& name): m_name(name) {};
  	void print();
  	virtual std::string getName();
};

virtual std::string Player::getName() {
	return m_name;
}

void Player::print() {
	std::cout << "This is the sub class" << std::endl;
}

int main() {
	Entity* e = new Entity();
  	std::cout << e->getName() << std::endl;
  	Player* p = new Player("Jacob");
  	std::cout << p->getName() << std::endl;
  	p->print();
  	e->print();
  
  	Entity* notVirtualEntity = new Entity();
  	Player* notVirtualPlayer = new Player("Bob");
  	notVirtualEntity = notVirtualPlayer;
  	notVirtualEntity->print();
  	notVirtualEntity->getName();
}

Tags:

Cpp Example