文章目录

//���ó˳���for�� while��if else��switch caseʵ��1+2+����+n //��Ȼ���͹�ʽ�Ͳ�������

#include <iostream>

using namespace std;
//***********************��һ�����ù��캯������*****************************
class Temp{
public:
    Temp(){++N; Sum+=N;}
    static void Reset() {N=0;Sum=0;}
    static unsigned int GetSum(){return Sum;}
private:
    static unsigned int N;
    static unsigned int Sum;

};
unsigned int Temp::N=0;
unsigned int Temp::Sum=0;
unsigned int Sum_Solution1(unsigned int n)
{
    Temp::Reset();
    Temp *a= new Temp[n];//���ù��캯��n��
    delete[] a;
    a=NULL;
    return Temp::GetSum();

}
//***********************�ڶ��������麯������*****************************
//�麯�������������ж���������ͬ���ĺ��������ҿ���ͨ������ָ�������������ʻ������������е�ͬ������
//��������������һ���ݹ飬һ����ֹ�ݹ飬���Ǵ��ж�ѡһ���� ����������ͨ��!!n����ֵת���ɲ����͡�
class A;
A * Array[2];
class A{
public:
    virtual unsigned int Sum(unsigned int n){
        return 0;
    }
};
class B :public A{
public:
    virtual unsigned int Sum(unsigned int n){
        return Array[!!n]->Sum(n-1)+n;//�Ӻ���ǰ��ʼ��
    }
};
//���麯��ʵ�ֺ�����ѡ�񣬵���ֵ��Ϊ0ѡ��B::Sum()��n=0ѡ��A::Sum()
int Sum_Solution2(int n){
    A a;
    B b;
    Array[0]=&a;
    Array[1]=&b;

    int value=Array[1]->Sum(n);
    return value;
}
//***********************���������ú���ָ������*****************************
//�ڴ�C���ԵĻ����У�����ʹ���麯������ʱ�����ú���ָ����ģ��
typedef unsigned int (*fun) (unsigned int);
unsigned int Sum_Solution3_Teminator(unsigned int n){
    return 0;
}
unsigned int Sum_Solution3(unsigned int n){
    static fun f[2]={Sum_Solution3_Teminator,Sum_Solution3};//��ʵ����һά����
    return n+f[!!n](n-1);
}
//***********************������ģ����������*******************************
template <unsigned int n> struct Sum_Solution4{
    enum Value {N=Sum_Solution4<n-1>::N+n};
};
template <> struct Sum_Solution4<1>{
    enum Value {N=1};
};
int main()
{
   cout<< Sum_Solution4<100>::N;//���ֵ��÷����ܶ���
    return 0;
}
文章目录