Archive for May, 2009

C++ gotchas

Saturday, May 2nd, 2009

Today I’m going to write about virtual function hiding.

Consider the following code:

#include <stdio.h>

class Foo
{
public:
    virtual void fun(int)
    {
        printf("A");
    }
    virtual void fun(bool)
    {
        printf("B");
        fun(int());
    }
};

class Bar : public Foo
{
public:
    virtual void fun(int)
    {
        printf("C");
    }
};

int main()
{    

    Bar b;
    b.fun(bool());    

    return 0;
}

What will be written to the console?

(more…)