Based on this, the following code should print "Running derived method", but when I run it, it prints "Running base method":
#include <iostream>
using namespace std;
class Base
{
public:
    Base() {}
    virtual void run() {cout << "Running base method" << endl;}
    virtual ~Base() {}
};
class Derived : public Base
{
public:
    Derived() {}
    void run() {cout << "Running derived method" << endl;}
    ~Derived() {}
};
int main()
{
    Base o = Derived();
    o.run();
    return 0;
}
