I'm surprised I haven't encountered this yet (or perhaps I have but somehow didn't notice):

Code:
#include <iostream>
#include <vector>

class Base
{
public:
    virtual bool Is_Mouse_Over() const = 0;
};

class A : public Base
{
public:
    virtual bool Is_Mouse_Over() const
    {
        std::cout << "A::Is_Mouse_Over" << std::endl;
        return true;
    }
};

class B : public Base
{
private:
    virtual bool Is_Mouse_Over() const
    {
        std::cout << "B::Is_Mouse_Over" << std::endl;
        return true;
    }
};

int main()
{
    std::vector<Base*> objects;
    objects.push_back(new A());
    objects.push_back(new B());

    objects&#091;0&#093;->Is_Mouse_Over();
    objects&#091;1&#093;->Is_Mouse_Over();

    return 0;
}
Prints out:
A::Is_Mouse_Over
B::Is_Mouse_Over
Doesn't this violate the private access modifier somehow?

Cheers.