为什么要定义静态方法
问题描述:
为什么要定义静态方法
答
楼上说是为了访问静态成员变量,但是类的非静态方法也是可以访问静态成员变量的,楼上恐怕是跟另外一条规则搞混了:“静态方法不能访问非静态方法和非静态变量“,这是由于静态方法中的不包含隐含的this指针,从而找不到非静态的成员造成的,但是C++并没有规定非静态方法不能访问静态成员,实际上非静态方法可以访问类的所有成员变量(包括静态成员变量和非静态成员变量).
至于为什么类会定义静态成员,本质上是由于有时候有些成员(包括成员变量和方法)从逻辑上说就应该是属于类的,类的实例是不应该有这样的成员的.当然,C++容许类的实例调用这些静态成员.而通过引入静态成员造成的结果就是可以让类的各个实例共享这个静态成员.