Member function calls external function passing the superclass

#include <iostream>
using namespace std;
//
// Geo is the super class
//
class Geo {
public:
  void geoFunc(){ cout << "this is geoFunc" << endl;};
};

void externalFunc( Geo p); 
  
class Circle : public Geo {
public:
  void circleFunc( void); 
};

void externalFunc( Geo p)
{
  cout << "this is externalFunc" << endl;
  p.geoFunc();
}

void Circle::circleFunc( void)
{
  cout << "this is circleFunc" << endl;

  externalFunc( *this); 
}

int main () {
  Circle crcl;

  crcl.circleFunc(); 
  return 0;
}