之前在c的面經總結中有對static進行詳細介紹,就不多介紹了,今天我們重點來介紹c++中static用法。
在類中,普通的成員方法在呼叫的時候編譯器會自動新增乙個this形參變數
普通成員方法的特點:
1、屬於類的作用域
2、呼叫該方法時需要依賴乙個物件
3、可以任意訪問類的私有成員變數
在成員變數前面加上static後,這個成員變數就是靜態的成員變數
靜態的成員變數在類內只是乙個宣告
一定要在類外進行定義和初始化
(重點)靜態成員變數不屬於物件,而是屬於類級別
在成員方法前面加上static後,這個成員方法就是靜態成員方法
靜態成員方法 ==》不會新增this形參變數
1、屬於類的作用域
2、用類名作用域來呼叫方法
3、可以任意訪問物件的私有成員,僅限於不依賴物件的成員(敲黑板)
在類中還有乙個關鍵字也可以用上就是const
常成員方法 產生==》const型別this
1、屬於類的作用域
2、呼叫依賴乙個物件,普通物件和常物件都可以
3、可以任意訪問物件的私有成員(唯讀)
//當我們定義乙個日期類和乙個學生類,我們需要知道現在定義了多少個學生物件,就可以定義乙個靜態計數成員變數和乙個靜態的列印函式
class
sdata
private
:int _year;
int _month;
int _day;};
class
students
static
void
show()
private
:char _name[20]
;int _age;
char _***;
sdata stu;
static
int _count;};
int students::_count =0;
intmain()
單例模式,屬於建立型別的一種常用的軟體設計模式。通過單例模式的方法建立的類在當前程序中只有乙個例項。
讓類只能例項化乙個物件
1、遮蔽生成物件的的介面
建構函式放在private
2、提供介面來生成唯一物件
1、不能生成類型別的方式返回
2、static
單例模式有兩種模式:
//懶漢模式:物件使用的時候才生成唯一物件
//餓漢模式:物件在使用之前已經生成
說的簡單一點就是,乙個類只能例項化乙個物件
實現思路:把建構函式設計為私有函式,然後由靜態成員方法呼叫
//懶漢模式
class
rector
return pre;
}private
:rector
(const
char
*name,
int age,
bool ***)
char
*mname;
int mage;
bool m***;
static rector *pre;
//標識唯一的的物件是否生成};
rector* rector::pre =
null
;int
main()
我們會發現,放第一次呼叫之後,其他呼叫皆無任何作用。
//餓漢模式
static rector*
getinstance
(const
char
*name,
int age,
bool ***)
private
:rector
(const
char
*name =
null
,int age =19,
bool *** =
false
)char
*mname;
int mage;
bool m***;
static rector *pre;
//標識唯一的的物件是否生成};
rector* rector::pre =
newrector
("ahadsa",5
,true);
intmain()
static和單例設計模式
static關鍵字的使用 static 靜態的 static可以用來修飾屬性,方法,塊,內部類 使用static修飾屬性 靜態變數 static修飾屬性說明 靜態變數隨著類的載入而載入 靜態的變數載入要早於物件的建立 由於類只會載入一次,則靜態變數在記憶體中也只會存在乙份 存在方法區的靜態域中。st...
C 回顧之static與單例模式
單例模式是應用最多的一種設計模式,它要求每個類有且只能有乙個例項物件,所以用c 設計乙個單例模式的方法如下 1 建構函式宣告為私有 這樣就保證了不能隨意構造乙個物件 2 將拷貝建構函式與等號運算子宣告為私有,並不提供他們的實現 即禁止物件被拷貝。3 在類中宣告乙個靜態的全域性訪問介面 4 宣告乙個靜...
基於Static的設計模式 單例模式
所謂類的單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對 某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法。如果我們要讓類在乙個虛擬機器中只能產生乙個物件,我們首先必須將類的構 造器的訪問許可權設定為private,這樣,就不能用new操作符在類的外部產生 類的物件了,但...