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

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

  

posted @ 2012-07-28 00:19  简单--生活  阅读(212)  评论(0编辑  收藏  举报
简单--生活(CSDN)