题目:计算1+2+...n,要求不能使用乘除法,循环、条件等判断语句
分析:使用两个全局成员变量i,sum,一个每次自增,一个累加,让在构造函数内部完成自增与累加的过程,这样没调用一次构造函数实现一次自增与累加,当调用n次构造函数,就完成这个功能。需要注意的是,直接用数组创建n个对象时不行的,因为数组下标必须是常量不能是变量,解决办法是用new动态创建n个对象,即调用n次构造函数。
class Sum
{
private:
static int i;
static int sum;
public:
Sum()
{
sum += i;
i++;
}
int GetSum()
{
return sum;
}
};
int Sum::i = 1;
int Sum::sum = 0;
int main()
{
int n = 0;
scanf("%d",&n);
//创建n个对象,会去调用n次构造函数,
//每个构造函数内部会对静态成员变量i、sum
//进行自增与累加,实现1+2+...n的效果
Sum* psum = new Sum[n];
int ret = psum->GetSum();
printf("%d\n",ret);
system("pause");
return 0;
}