之前, 我们利用间接递归来实现了1-n的求和, 我们自己动态地选择了调用哪个函数。 仔细想一下, C++中的多态不就是专门干这个事情的么? 试一下:
#include <iostream>
using namespace std;
class A
{
public:
virtual int getResult(int n)
{
return 0;
}
};
A *p[2] = {NULL, NULL};
class B : public A
{
public:
int getResult(int n)
{
return p[!!n]->getResult(n - 1) + n;
}
};
int main()
{
A a;
B b;
p[0] = &a;
p[1] = &b;
cout << p[1]->getResult(100) << endl; // 5050
return 0;
}
多态强大啊。