研究一下这个代码,为什么得到这么奇怪的结果!该如何处理

研究一下这个代码,为什么得到这么奇怪的结果!!!
#include   <iostream>
using   namespace   std;

class   B
{
public:
        B()   {cout   < <   "B::B()   "   < <   endl;}
        void   f()   {cout   < <   "B:f()   "   < <   endl;}
private:

};

class   D
{
public:
        D(){cout   < <   "D::D() "   < <   endl;}
        void   f()   {   void   B::f();   }
private:

};

int   main()
{
        D   d;
        d.f();
        return   0;
}

------解决方案--------------------
class D
{
public:
D(){cout < < "D::D() " < < endl;}
void f() { B b; b.f(); }
private:

};