成人免费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技術棧公眾號

主站蜘蛛池模板: 亚洲九九精品 | 午夜伊人 | 欧美成人a∨高清免费观看 欧美日韩中 | h视频在线观看免费 | 欧美视频在线看 | 先锋资源吧| 久久国产婷婷国产香蕉 | 色综合一区二区三区 | 亚洲视频免费在线播放 | 亚洲精品久久视频 | 黄网免费看 | 国产成人网 | 欧美一区二区三区在线观看视频 | 亚洲精品色 | 国产色 | 女女百合av大片一区二区三区九县 | 国产精品免费一区二区 | 亚洲国产一区二区视频 | 免费观看黄色一级片 | 欧美一区二区三区国产精品 | 99精品在线| 精品一级毛片 | 国产色黄 | 国产精品不卡视频 | 毛片一级电影 | 在线观看视频91 | 黄色国产在线播放 | 国产精品久久久久久久久久久久午夜片 | 欧美一区二区三区,视频 | 蜜臀网站 | 国产精品一级 | 99视频网 | 亚洲一av | 91伊人 | 国产精品久久久久久久久久久久 | 波多野结衣一区二区三区 | 精品久久一区 | 久久成人国产精品 | 日韩在线国产 | 中文字幕第一页在线 | 亚洲福利在线观看 |