成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++靜態成員Static和單例設計模式

開發
靜態成員是指被static修飾的成員變量或成員函數,在程序運行過程中只占一份內存,類似于全局變量,且也存儲在全局區。

靜態成員

靜態成員是指被static修飾的成員變量或成員函數,在程序運行過程中只占一份內存,類?似于全局變量,且也存儲在全局區。

靜態成員變量邏輯上屬于類,可以通過類的權限控制靜態成員的訪問權限。

靜態成員函數內部只能訪問靜態成員變量或函數,因為靜態成員不依賴于對象的創建,所以也不可以通過this指針訪問。如果未創建對象,調用靜態成員函數里面訪問了非靜態函數或變量,邏輯上是行不通的。構造函數和析構函數也不可能是靜態的。

對象計數器

靜態成員變量的一個重要應用是統計一個類創建了多少對象。

計數器可以定義為靜態成員變量,每創建一個對象,在構造函數中計算器+1,銷毀一個對象,將計數器-1。

#include <iostream>
using namespace std;

class Student {
private:
int m_id;
static int ms_count;
public:
static int get_count() {
return ms_count;
}

Student(int id = 0) : m_id(id) {
ms_count++;
}

~Student() {
ms_count--;
}
};

int Student::ms_count = 0;

int main() {

Student* stu1 = new Student(101);

cout << Student::get_count() << " " << stu1->get_count() << endl;

Student* stu2 = new Student(102);
cout << Student::get_count() << " " << stu1->get_count() << endl;

delete stu2;

cout << Student::get_count() << " " << stu1->get_count() << endl;
return 0;
}

單例設計模式

?在程序設計過程中,經常會有只能創建一個實例的需求。比如,一個系統中可以存在多個打印任務,但是只能有一個正在工作的任務。

單例設計模式可以借助static靜態成員實現。為了防止隨意創建或刪除對象,私有化構造和析構函數,并使用類的私有靜態指針變量指向類的唯一實例,使用一個共有的靜態方法獲取該實例。?

#include <iostream>
using namespace std;

class Student {
private:
static int ms_id;
static Student* ms_stu;
Student(){}
~Student(){}
public:
static Student* createStudent(int id) {
if (ms_stu == NULL) {
ms_stu = new Student();
ms_id = id;
}

return ms_stu;
}

static void deleteStudent() {
if (ms_stu != NULL) {
delete ms_stu;
ms_id = -1;
}
}

static int getStudentId() {
return ms_id;
}
};

int Student::ms_id = -1;
Student* Student::ms_stu = NULL;

int main() {

Student* stu = Student::createStudent(101);
cout << stu->getStudentId() << endl;

stu->deleteStudent();
cout << stu->getStudentId() << endl;

return 0;
}
責任編輯:華軒 來源: 今日頭條
相關推薦

2015-09-06 11:07:52

C++設計模式單例模式

2010-02-05 17:00:06

C++單例模式

2021-02-01 10:01:58

設計模式 Java單例模式

2010-02-03 09:43:16

C++單例模式

2021-03-02 08:50:31

設計單例模式

2010-01-21 14:19:44

C++靜態成員

2010-01-27 10:45:21

C++單例模式

2016-03-28 10:23:11

Android設計單例

2013-11-26 16:20:26

Android設計模式

2010-01-18 18:04:28

靜態成員

2010-01-21 14:28:03

C++靜態成員函數

2010-01-28 16:42:29

C++靜態成員

2024-12-30 11:12:59

C++靜態成員函數

2011-05-24 16:58:52

CC++

2022-06-07 08:55:04

Golang單例模式語言

2022-02-06 22:30:36

前端設計模式

2010-01-18 17:57:02

靜態數據

2023-10-07 15:53:05

C/C++靜態變量內存

2024-02-22 18:07:17

C++靜態成員代碼

2024-02-04 12:04:17

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲v日韩v综合v精品v | 午夜av免费 | 久久99这里只有精品 | 欧美一级免费观看 | 日本精品久久久久 | 婷婷色成人 | 精品久久久久久久久久久下田 | 亚洲a级| 精品美女在线观看视频在线观看 | 91在线视频免费观看 | 日本在线视频一区二区 | 毛片a级毛片免费播放100 | 日韩三级 | 香蕉国产在线视频 | 成人在线看片 | 久久一二区 | 91精品国产高清久久久久久久久 | 狠狠热视频| 久久久久久成人 | 99福利视频| 日韩在线欧美 | 欧美视频一区二区三区 | 国产精品不卡 | 亚洲综合大片69999 | 欧美三区在线观看 | 国产中文 | 人人种亚洲| 欧美国产亚洲一区二区 | 男女羞羞的网站 | 日本高清中文字幕 | 午夜小视频在线播放 | 精品国产欧美一区二区三区成人 | 日韩欧美在线观看 | 日本国产欧美 | av黄色在线播放 | 欧美成人手机在线 | 国产麻豆一区二区三区 | 午夜一级做a爰片久久毛片 精品综合 | 久久久久久国产一区二区三区 | 欧美日韩一区在线观看 | 男女一区二区三区 |