研究一下这个代码,为什么得到这么奇怪的结果!该如何处理
研究一下这个代码,为什么得到这么奇怪的结果!!!
#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:
};
#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:
};