第十七章 特殊成员_静态变量

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

}

  

你可能感兴趣的:(静态变量)