在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量。
与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝。
静态成员变量,属于某个类,所有对象共享。
静态变量,是在编译阶段就分配空间,对象还没有创建时,就已经分配空间(编译阶段分配内存空间,位于内存四区的-全局区)。
1.创建静态成员变量必须在类内声明,在类外初始化。*******************
2. 静态数据成员不属于某个对象,在为对象分配空间中不包括静态成员所占空间。
3. 静态数据成员可以通过类名或者对象名来引用。
class Person{ public: //类的静态成员属性 static int sNum; private: static int sOther; }; //类外初始化,初始化时不加static int Person::sNum = 0; int Person::sOther = 0;
int main(){
//静态成员变量两种访问方式*********************
//1.通过类名直接访问 Person::sNum = 100; cout << "Person::sNum:" << Person::sNum << endl; //2. 通过对象访问 Person p1, p2; p1.sNum = 200; cout << "p1.sNum:" << p1.sNum << endl; cout << "p2.sNum:" << p2.sNum << endl; //3. 静态成员也有访问权限,类外不能访问私有成员 //cout << "Person::sOther:" << Person::sOther << endl; Person p3; //cout << "p3.sOther:" << p3.sOther << endl; system("pause"); return EXIT_SUCCESS; }
在类定义中,前面有static说明的成员函数称为静态成员函数。静态成员函数使用方式和静态变量一样,同样在对象没有创建前,即可通过类名调用。静态成员函数主要为了访问静态变量,但是,不能访问普通成员变量
原文:https://www.cnblogs.com/helloql/p/14619399.html