//本方法重点在于
//若n非零,则!!n 为true,否则为false
#include <iostream>
using namespace std;
//类的前向声明
class A;
//定义数组
A* Array[2];
//基类,提供递归的结尾标记
class A
{
public:
virtual int Sum(int n)
{
return 0;
}
};
class B : public A
{
public :
virtual int Sum(int n)
{
//递归调用,非零就是派生类的,当n==0,才跳到基类中的sum!!
return Array[!!n]->Sum(n-1)+n;
}
};
int sum(int n)
{
A a;
B b;
//基类指针
Array[0] = &a;
//派生类指针
Array[1] = &b;
//
int value = Array[1]->Sum(n);
return value;
}
void main()
{
cout << sum(10) <<endl;
}
【100题】求1+2+……+n的和-----方法二
最新推荐文章于 2022-04-05 20:40:31 发布