// 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;
}