#include <iostream>
 
class Base
{
public:
    Base()
    {
        std::cout << "Base::Base() \n";
    }
    
    ~Base()
    {
        std::cout << "Base::~Base() \n";
    }
};
 
class Derived : public Base
{
public:
    Derived()
    {
        std::cout << "Derived::Derived() \n";
    }
    
    ~Derived()
    {
        std::cout << "Derived::~Derived() \n";
    }
};
 
void foo(Base) {}
 
int main()
{
    Derived instance;
    foo(instance);
}