C++ 類內靜態成員
阿新 • • 發佈:2021-01-13
在程式執行時分配,非靜態成員在例項化時分配
作用域在類內,通過發訊息來引用
在類外初始化,不能通過初始化列表來初始化
int ::num=0;
所有成員共享靜態成員空間(只分配一次)
非靜態方法只屬於物件
靜態成員方法屬於物件和類,只能訪問靜態成員
類內類外引用(不能破壞封裝性)
1、物件引用:
物件.靜態成員變數
2、類引用:
類::靜態變數
#include<iostream>
#include<string>
using namespace std;
class people
{
public:
protected:
string name; //複雜型別
short age;
private:
static int num;//統計people例項化次數
//靜態成員在程式執行時分配,不在此初始化
//靜態成員,屬於物件,屬於類
public:
people()
{
num++;
}
//非靜態方法,只屬於物件
int getnum()
{
return num;
}
//靜態方法,屬於物件,屬於類
static int givenum()
{
//cout<<age<<endl;報錯,只能訪問靜態變數
//getnum();報錯,非靜態方法,只能物件訪問
return num;
}
};
//初始化
int people::num=0;
int main()
{
people p1,p2,p3;//分配非靜態空間
cout<<p1.getnum()<<endl;
cout<<people::givenum()<<endl;//呼叫靜態方法
return 0;
}
結果
3
3