访问基类的私有虚函数
#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;
}
上面代码是演示虚函数的,但是我有一行不明白,不知道该怎么分析,
就是我注释的那一行,不知道啥意思,怎么理解
[解决办法]
(Fun)*((int* )* (int *) (&b) + i )
首先,取得b的地址(&b)
然后强制转换为(int*)类型
再从地址取值*
把取到的值转换为(int*)类型
把得到的int*(指向有符号整数的指针)加上i。。。这一步得到了一个指针
取刚得到的指针所指向的地址的值*
将这个值转换为Fun类型(这是一个函数指针类型)
[解决办法]