静态成员变量与静态成员函数
静态成员变量不专属于某个对象,他属于整个类中所有对象的成员变量,在实例化一个对象的时候可能无法给它开辟内存,因此我们需要在全局为他开辟内存。
[cpp]
#include<iostream>
using namespace std;
class A
{
public:
<span style="white-space:pre"> </span>static int count;
<span style="white-space:pre"> </span>A(int i):key(i)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>count++;
<span style="white-space:pre"> </span>cout<<"构造函数!"<<endl;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>~A()
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>count--;
<span style="white-space:pre"> </span>cout<<"析构函数!"<<count<<endl;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>int Getkey()
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>return key;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>int GetCount()
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>return count;
<span style="white-space:pre"> </span>}
private:
<span style="white-space:pre"> </span>int key;
};
int A::count=0;
int main()
{ www.zzzyk.com
<span style="white-space:pre"> </span> A a(5);
<span style="white-space:pre"> </span> cout<<a.Getkey()<<" "<<a.GetCount()<<endl;
<span style="white-space:pre"> </span> A b(6);
<span style="white-space:pre"> </span> //可以直接用类名去访问静态成员变量
<span style="white-space:pre"> </span> cout<<A::count<<endl;
<span style="white-space:pre"> </span> cout<<b.GetCount()<<endl;
<span style="white-space:pre"> </span> return 0;
}
静态成员函数不能访问普通成员变量以及普通成员函数,但是可以访问静态成员变量和静态成员函数。因为静态成员函数是属于整个类的,所以他不能访问某个对象的 成员
变量,因为它没有this指针,但是他可以访问静态成员函数和静态成员变量。
[cpp]
#include<iostream>
using namespace std;
class A
{
public:
A(int i):key(i)
{
count++;
cout<<"构造函数!"<<endl;
}
~A()
{
count--;
cout<<"析构函数!"<<count<<endl;
}
int Getkey()
{
return key;
}
static int GetCount()
{
return count;
}
static void Show()
{
cout<<count<<endl;
count++;
//需要讲GetCount变成static才能被Show访问
cout<<GetCount();
}
private:
int key;
static int count;
};
int A::count=10;
int main()
{
A::Show();
A a(5);
cout<<a.Getkey()<<" "<<a.GetCount()<<endl;
A b(6);
cout<<b.GetCount()<<endl;
return 0;
}
补充:软件开发 , C++ ,