有時程序中有些數據需要持久保存,或者其他原因,需要調用全局的,但全局的對於開發來說,比較危險。這裡介紹static,感覺很有用。
對於static我是這樣理解的:
類中的一般成員在生成對象的時候,每個成員都關聯著對象。因此對象可以調用自己的成員,因此this指針也就有了意義,而對於static聲明的成員,只關聯於類,生成對象的時候不對該成員進行實例化,因此對象無法對此成員進行調用,this指針也就沒意義了。
除此之外,感覺static很有優勢,可以替代全局的部分功能,同時還具有了封裝屬性。具體如下代碼:
Test.h
#ifndef TEST_H
#define TEST_H
#include<iostream>
using namespace std;
class Test
{
public:
Test();
void set();
void print();
virtual ~Test();
protected:
private:
static int num; //私有靜態成員,具有封裝性
//static int num = 0; //聲明時也不能定義。但const static int num=0;可以定義,例外。
};
#endif // TEST_H
#include "../include/Test.h"
int Test::num = 0; //靜態成員初始化
Test::Test()
{
//ctor
// this->num = 0; //靜態成員只能定義一次,不能在類初始化中定義
}
void Test::set()
{
num ++;
}
void Test::print()
{
cout << num << endl;
}
Test::~Test()
{
//dtor
}
#include <iostream>
#include "./include/Test.h"
using namespace std;
int main()
{
Test t;
// t.num = 9; //私有成員無法使用
t.set();
t.print();
return 0;
}
望廣大網友給予指導…
摘自Leeboy_Wang的專欄