1.函数指针数组
int f0(int n)
{
if(n==0)
return 0;
}
int f1(int n)
{
int (*p[2])(int) = { f0,f1 };
return p[!!n](n - 1) + n;
}
int main()
{
cout << f1(100) << endl;
return 0;
}
2.虚函数
class A;
A* arr[2];
class A
{
public:
virtual int fn(int n)
{
return 0;
}
};
class B:public A
{
public:
virtual int fn(int n)
{
return arr[!!n]->fn(n - 1) + n;
}
};
int main()
{
A a;
B b;
arr[0] = &a;
arr[1] = &b;
cout << arr[1]->fn(100) << endl;
return 0;
}