`
weihe6666
  • 浏览: 428286 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

类的静态成员变量

阅读更多
1.那一种成员变量可以在同一个类的实例间共享?
   必需使用静态成员数据在一个类的所有实例间共享数据。 如果想限制静态成员的访问,必需把他们声明为私有或者保护类型。

   但是静态成员数据必需先初始化、
#include<iostream>
using namespace std;

class SavingAccount 
{ 
private: 
         char m_name[40]; 
         char m_addr[60]; 
         double total; 
         static double m_rate; 
public: 
         static void setRate(double newRate)
		 {
			 m_rate = newRate;
		 } 

		 void Show()
		 {
			 cout << "m_rate= "<< m_rate << endl;
		 }
  
}; 

double SavingAccount::m_rate = 0.0075; //静态成员变量首先初始化

void main() 
{
  SavingAccount::setRate(0.00746);
  //cout<<SavingAccount::m_rate << endl;
  SavingAccount myAccount; 
  myAccount.Show();
  myAccount.setRate(0.0074);
  myAccount.Show();
} 


2.
#include<iostream>
using namespace std;

class Cat
{
public:
	Cat(int age):itsAge(age)// 构造函数,用于初始化
	{
		HowManyCats++;
	}
	virtual ~Cat()
	{
		HowManyCats--;
	}
	virtual int GetAge()
	{
		return itsAge;
	}
	virtual void SetAge(int age)
	{
		itsAge = age;
	}

	static int GetHowMany()
	{
		return HowManyCats;
	}

private:
	int itsAge;
	static int HowManyCats;
};

int Cat::HowManyCats = 0;

void tele();

int main()
{
	const int MaxCats=5;
	Cat*CatHouse[MaxCats];
	for(int i=0; i<MaxCats;i++)
	{
		CatHouse[i] = new Cat(i);
		tele();
	}
	for(int i=0;i<MaxCats; i++)
	{
		delete CatHouse[i];
		tele();
	}
	return 0;
}

void tele()
{
	cout << "There are" << Cat::GetHowMany() << "Cats alive!" << endl;
}


类的静态成员变量一定要初始化,如果把静态成员变量设置为私有,那么可以通过公有静态成员函数访问。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics