c++类中的static详解(续)

未经博主同意不得私自转载!不准各种形式的粘贴复制本文及盗图!

类中static的详解:





静态数据成员:

声明:不能在类声明中定义,类内定义。

内存分配:只分配一次内存,定义时分配空间,位于全局数据区。

共享性:类内所有对象共享,不属于特定对象,即使没有类的实例化,也可以使用它。

初始化格式

<数据类型><类名>::<静态数据成员名>=<值>

Eg:  int Myclass::Sum=0;

类的静态数据成员有两种访问形式
①.<类对象名>.<静态数据成员名>;

②.<类类型名>::<静态数据成员名>;

使用好处

多个对象拥有相同属性时,定义为静态数据成员节省空间,一改全改。

与全局不同

①.不占用全局名字空间,不会发生全局命名冲突;

②.可实现信息隐藏,定义为private私有;

 

静态成员函数:

①.只能类内使用static关键字修饰函数;

②.属于类,不为特定对象服务,类内实现,普通函数隐有指针指向特定函数eg:this->put();

③.它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数,因为静态成员函数不含this指针;

④.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

⑤.非静态成员函数可以任意地访问静态成员函数和静态数据成员;

⑥.静态成员函数不能访问非静态成员函数和非静态数据成员;

⑦.由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

⑧.静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下: 
class base{ 
         virtual static void func1();//错误 
         static void func2() const;//错误 
         static void func3() volatile;//错误 
}; 

调用

调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数。

或直接使用如下格式

<类名>::<静态成员函数名>(<参数表>)

调用类的静态成员函数。

 ps:一切内容均是本人根据网上各种途径总结提炼的,如果涉及版权希望能及时提醒更改。同时希望注重保护他人成果!

 

posted @ 2016-08-19 12:54  Joe.Smith  阅读(207)  评论(0编辑  收藏  举报