第十七章 特殊成员_静态变量
// 1 静态成员变量 //从本章开始我们将学习类中的一些特殊成员,这些成员分为三大种--变量 函数 和指针 //本节我们将接触类的第一个特殊成员--静态成员变量或者说静态成员数据 //在此之间,我们学到的类的对像中的变量一般都是这个对像所专有的,它是该对像区别于其他对像的一个标志 //不能为其他对像共享使用 /*#include <iostream> using namespace std; class A { public: A(int i){this->age = i; A::total++;} ~A(){ A::total--; } int get(){ return this->age;} static int total; private: int age; }; int A::total = 0; //这里忘加int 这个类型在前面,所以错误 int main() { const int max = 10; int i; A *p[max]; //定义一个类的数组指针 for(i=0; i<max; i++) { p[i] = new A(i); } cout<<"现在类A的total值是:"<<A::total<<endl; for(i=0; i<max; i++) { cout<<"A::total的值为:"<<A::total<<endl; cout<<"类中的age值为:"<<p[i]->get()<<endl; delete p[i]; } for(int i=0; i<5; i++) { A::total++; } cout<<"A::total:"<<A::total<<endl; //该例没有创一个对像,但是你却可以通过类名和限定符访问静态变量total并且对其进行自加操作,这说明静态变量在没有对象这前就存在 return 0; }*/ //第一 静态成员变量是属于整个类的全局变量,它不单属于某个对像,普通成员变量是属于类中对像的变量,它不能被所有对像共享 //第二 静态成员变量必须在全局进行定义,而成员变量由于是属于某个对像的,而不是属于整个类的,因此不用在全局进行定义 //第三 在使用静态成员变量时,可以不限定为某个的对像,只与类名连用即可,如:A::total.而不用A a; a.total; //第四 静态成员在没有像之前就存在 //私有静态成员变量 #include <iostream> using namespace std; class A { public: void show(){cout<<A::x<<endl; } void set(int xx){A::x = xx;} //private: static int x; }; int A::x = 0; void func1() { cout<<"A::x:"<<A::x<<endl; } int main() { A a; a.set(11); a.show(); func1();//私有静态成员变量,只能在类中访问,你在类外是不能访问的 return 0; }