1+2+3....+n的构造函数求法(类的静态成员变量)

来源:互联网 发布:java程序员面试 编辑:程序博客网 时间:2024/05/03 02:23

解法一:

1.static变量在类外赋值,且前面要加类型。

3 类的静态成员变量在使用前必须先初始化。

2.这题为什么要先reset一下,在外面不是赋值了吗?

class tmpClass{public:    tmpClass()    {        ++N;        sum+=N;    }    static int getsum()    {        return sum;    }    static void reset()    {        N=0;        sum=0;    }   private:    static int sum;     static int N;    };//类的静态成员变量在使用前必须先初始化。int tmpClass::sum=0;//这里必须要有intint tmpClass::N=0;class Solution {public:    int Sum_Solution(int n) {        tmpClass::reset();//这里必须要重新置0,可能没有初始化成功??               tmpClass* tmparr=new tmpClass[n];             delete []tmparr;        return tmpClass::getsum();    }};


结论1:不能通过类名来调用类的非静态成员函数

结论2:类的对象可以使用静态成员函数和非静态成员函数。

因为静态成员函数属于整个类,在类实例化对象之前就已经分配空间了,而类的非静态成员必须在类实例化对象后才有内存空间,所以这个调用就出错了,就好比没有声明一个变量却提前使用它一样。 

结论3:静态成员函数中不能引用非静态成员。

结论4:类的非静态成员函数可以调用用静态成员函数,但反之不能。

类的静态成员变量在使用前必须先初始化。

结论5:类的静态成员变量必须先初始化再使用。




解法二:详细见《剑指offer》

0 0
原创粉丝点击