新手在做面试题,求解虚函数的有关问题
新手在做面试题,求解虚函数的问题?
#include <iostream>
using namespace std;
class A
{
virtual void g()
{
cout << "A::g" << endl;
}
private:
virtual void f()
{
cout << "A::f" << endl;
}
};
class B : public A
{
void g()
{
cout << "B::g" << endl;
}
virtual void h()
{
cout << "B::h" << endl;
}
};
typedef void(*Fun)(void);
int main()
{
B b;
Fun pFun;
for(int i= 0;i < 3; i++)
{
pFun = (Fun)*((int *)*(int*)(&b)+i);
pFun();
}
return 0;
}
结果:
B::g
A::f
B::h
默认的不都是private吗?派生类怎么调用基类的私有虚函数啊?求解
------解决方案--------------------
私有的也是他的成员啊 你是不是想成了私有继承
#include <iostream>
using namespace std;
class A
{
virtual void g()
{
cout << "A::g" << endl;
}
private:
virtual void f()
{
cout << "A::f" << endl;
}
};
class B : public A
{
void g()
{
cout << "B::g" << endl;
}
virtual void h()
{
cout << "B::h" << endl;
}
};
typedef void(*Fun)(void);
int main()
{
B b;
Fun pFun;
for(int i= 0;i < 3; i++)
{
pFun = (Fun)*((int *)*(int*)(&b)+i);
pFun();
}
return 0;
}
结果:
B::g
A::f
B::h
默认的不都是private吗?派生类怎么调用基类的私有虚函数啊?求解
虚函数
------解决方案--------------------
私有的也是他的成员啊 你是不是想成了私有继承