未经博主同意不得私自转载!不准各种形式的粘贴复制本文及盗图!
类中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:一切内容均是本人根据网上各种途径总结提炼的,如果涉及版权希望能及时提醒更改。同时希望注重保护他人成果!