静态成员是能够独立访问的,也就是说,无须建立任何对象实例就能够访问,而静态成员函数可不创建对象就能够被使用。
或者说静态函数与通常函数没有太大的区别,只是访问有限制,静态变量跟通常的全局变量的区别就是访问有限制。函数
static变量this
static变量不像普通的变量,static变量独立于一切类对象处在。static修饰的变量先于对象存在,因此static修饰的变量要在类外初始化。由于static是全部对象共享的东西嘛,必需要比对象先存在的spa
class test { private: public: static int i; }; int test::i = 100;//此句包含了声明和赋值,初始化不受private和protected访问限制,可是如果priivate,下面main函数就没法访问 int main() { cout << test::i << endl; return 0; }
好处:用static修饰的成员变量在对象中是不占内存的,由于他不是跟对象一块儿在堆或者栈中生成,用static修饰的变量在静态存储区生成的,因此用static修饰一方面的好处是能够节省对象的内存空间。因此通常类const变量通常改成static const变量,能够节省一些空间。指针
-静态成员变量属于整个类全部
-静态成员变量的生命期不依赖于任何对象,为程序的生命周期
-能够经过类名直接访问公有静态成员变量
-全部对象共享类的静态成员变量
-能够经过对象名访问公有静态成员变量
-静态成员变量须要在类外单独分配空间
-静态成员变量在程序内部位于全局数据区 (Type className::VarName = value)
code
static成员函数 对象
static函数也是类函数,因此在写定义时也要写明属于哪一个类。与不一样类函数不一样的是,它没有传入this指针,正由于没有this指针,因此static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员。
静态成员函数不能够同时声明为 virtual、const、volatile函数。blog
类的成员函数有以下特性: -静态成员函数是类的一个特殊的成员函数
-静态成员函数属于整个类全部,没有this指针
-静态成员函数只能直接访问静态成员变量和静态成员函数
-能够经过类名直接访问类的公有静态成员函数
-能够经过对象名访问类的公有静态成员函数
-定义静态成员函数,直接使用static关键字修饰便可
生命周期