精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

c++ Static 成員:讓類變量不再“孤單”

開發 前端
靜態成員變量和靜態成員函數讓我們在 C++ 中能更方便地管理共享數據和功能。它的一個關鍵特點是:它們屬于整個類,而不是某個具體的對象。

前言

如果說 static 變量讓函數“記住”上一次的狀態,那么 static 成員變量就像是整個類的“共享記憶”。這次,我們將從類的角度來聊聊 static 成員變量和函數,幫你徹底搞懂它們是什么,怎么用。

什么是 static 成員變量?

在 C++ 中,類的成員變量通常是屬于某個具體對象的,每個對象都會有一份獨立的成員變量。而 static 成員變量 可不一樣,它是所有對象共享的一個變量。

舉個例子:

假設我們有一個類 Car,它有一個成員變量 carCount 用來統計車的數量。

如果每個 Car 對象都單獨存儲這個數量,那就沒什么意義了。因為 carCount 應該是所有 Car 對象共享的,而不是每個對象都自有一份。這個時候,就可以用 static 來聲明 carCount。

#include <iostream>
using namespace std;

class Car {
public:
    static int carCount;  // 聲明靜態成員變量

    Car() {
        carCount++;
    }
};

// 靜態成員變量需要在類外定義
int Car::carCount = 0;

int main() {
    Car car1;
    Car car2;

    cout << "Number of cars: " << Car::carCount << endl;  // 輸出:2
    return 0;
}

在這個例子中,carCount 變量是靜態的,所有 Car 對象共享同一個 carCount,所以無論創建多少個 Car 對象,它都會累加。

如何訪問 static 成員?

靜態成員的訪問和普通成員稍微有些不同。普通成員變量需要通過對象來訪問,而靜態成員變量可以通過 類名:: 來直接訪問,甚至不需要創建對象。

訪問靜態成員:

class Car {
public:
    static int carCount;  // 靜態成員變量

    Car() {
        carCount++;
    }
};

// 在類外定義靜態成員
int Car::carCount = 0;

int main() {
    // 直接通過類名訪問靜態成員
    cout << "Initial car count: " << Car::carCount << endl;  // 輸出:0

    Car car1;
    cout << "After one car: " << Car::carCount << endl;  // 輸出:1
    Car car2;
    cout << "After two cars: " << Car::carCount << endl;  // 輸出:2

    return 0;
}

你可以看到,靜態成員 carCount 通過 Car::carCount 來訪問,不需要創建 Car 對象。這樣就避免了不必要的內存浪費。

靜態成員函數

什么是靜態成員函數?

靜態成員函數 是屬于類的,而不是某個對象的。也就是說,你可以通過類名來調用它,而不需要先創建對象。這一點與普通的成員函數不同,普通成員函數是通過對象來調用的。

它有什么特點?

1、類級別的函數:靜態成員函數屬于類級別,不依賴于任何對象。你不需要創建類的實例,就能通過類名直接調用。

2、只能訪問靜態成員:靜態成員函數只能訪問類中的靜態成員變量和其他靜態成員函數,因為它沒有綁定到任何具體的對象,也就無法訪問屬于對象的非靜態成員。

3、沒有 this 指針:普通成員函數有一個隱含的 this 指針,指向調用該函數的對象,而靜態成員函數沒有 this 指針。

與普通成員函數的區別是什么?

  • 普通成員函數:普通成員函數是與對象關聯的,它可以訪問類的靜態和非靜態成員。訪問非靜態成員時,它依賴于對象的 this 指針。
  • 靜態成員函數:靜態成員函數沒有 this 指針,它不能直接訪問非靜態成員,只能訪問靜態成員。

舉個例子:

#include <iostream>
using namespace std;

class Car {
public:
    static int carCount;  // 靜態成員變量

    Car() {
        carCount++;
    }

    // 靜態成員函數
    static void printCarCount() {
        cout << "Number of cars: " << carCount << endl;
    }
};

// 靜態成員變量需要在類外定義
int Car::carCount = 0;

int main() {
    Car car1;
    Car car2;

    // 通過類名調用靜態成員函數
    Car::printCarCount();  // 輸出:2
    return 0;
}

在上面的代碼中,printCarCount() 是一個靜態成員函數,它只能訪問靜態成員變量 carCount,不能直接訪問非靜態成員變量。如果嘗試訪問非靜態成員,編譯器會報錯。

靜態成員函數不能訪問非靜態成員:

class Car {
public:
    int speed;  // 非靜態成員變量
    static int carCount;  // 靜態成員變量

    static void printSpeed() {
        // 編譯錯誤:靜態成員函數無法訪問非靜態成員變量
        cout << "Speed: " << speed << endl;
    }
};

那為什么靜態成員函數不能訪問非靜態成員?

這個問題其實很好理解,關鍵在于靜態成員函數的“身份”問題。

1、靜態成員函數屬于類,而不是對象:靜態成員函數是在類層面上定義的,它沒有綁定到具體的對象。所以,當你調用靜態成員函數時,它是通過類名來調用的,不依賴于任何特定的對象。

2、非靜態成員屬于對象:而非靜態成員變量和普通成員函數是屬于具體對象的。當你創建一個對象時,非靜態成員才會存在,并且只有通過這個對象才能訪問這些成員。

靜態成員函數無法訪問非靜態成員的原因就是,它不屬于任何特定的對象,所以無法知道該訪問哪個對象的非靜態成員。換句話說,靜態成員函數沒有“this”指針,它無法指向具體的對象,也就不能訪問屬于某個對象的成員。

舉個例子來說明:

還是上面 Car 類的例子,speed 是一個非靜態成員變量,而 carCount 是一個靜態成員變量。

  • 當你調用靜態成員函數 printSpeed() 時,它是通過類名來調用的。這個函數沒有“this”指針,無法知道是哪個 Car 對象的 speed 變量。
  • 但是,靜態成員函數可以訪問類中的靜態成員 carCount,因為靜態成員是屬于類的,不依賴于具體的對象。

所以,靜態成員函數只能訪問靜態成員變量和其他靜態函數,無法訪問非靜態成員。

小結:

靜態成員函數和對象沒關系,它不屬于某個具體對象,所以它不能直接操作對象的非靜態成員變量。

static 成員的應用場景:

了解了靜態成員變量和靜態成員函數的基本概念,接下來我們來聊聊它們的實際應用場景。雖然在很多情況下,我們的類對象都有自己獨立的成員變量和成員函數,但在某些特定場景下,靜態成員就能派上大用場。

1. 全局共享數據

假設我們有一個程序需要統計不同用戶的訪問次數,而這個次數應該對所有用戶共享,而不是每個用戶都有一份。這時,靜態成員變量就能幫助我們做到這一點。

例如,我們可以在用戶類中創建一個靜態的訪問計數器,所有用戶對象共享這個計數器,這樣每當有用戶訪問時,計數器就會增加,而不需要每個對象都單獨保存一份。

class User {
public:
    static int visitCount;  // 所有用戶共享

    User() {
        visitCount++;
    }
};

// 在類外定義靜態變量
int User::visitCount = 0;

int main() {
    User user1;
    User user2;
    cout << "Total visits: " << User::visitCount << endl;  // 輸出:2
    return 0;
}

在這個例子中,不管你創建多少個 User 對象,它們都會共享同一個 visitCount,這樣就避免了每個用戶對象都存儲計數的重復工作。

2. 工廠模式中的靜態成員

有些時候,類中的靜態成員函數可以幫助你創建對象。工廠模式就是一個常見的例子,它允許你通過靜態成員函數來創建類的實例,而不需要在外部直接調用構造函數。

class Product {
public:
    static Product* createProduct() {
        return new Product();
    }
};

int main() {
    Product* product = Product::createProduct();
    // 使用 product
    delete product;
    return 0;
}

在這里,createProduct 是一個靜態成員函數,用來創建 Product 對象。這種做法能夠封裝對象創建的細節,提供更靈活的控制。

3. 配置類中的靜態成員

在很多程序中,我們可能會有一個配置類,用來保存一些全局的配置數據(如程序的設置、資源路徑、日志級別等)。這些配置信息往往是固定的,不會因為對象的創建而變化。此時,靜態成員變量非常適合用來保存這些共享的數據。

例如,一個全局的日志配置類可以用靜態成員來記錄當前的日志級別:

class Logger {
public:
    static int logLevel;

    static void log(const string& message) {
        if (logLevel >= 2) {
            cout << "Log: " << message << endl;
        }
    }
};

// 在類外定義靜態變量
int Logger::logLevel = 2;

int main() {
    Logger::log("Program started");
    Logger::logLevel = 1;
    Logger::log("Another log");
    return 0;
}

在這個例子中,logLevel 是一個靜態成員,所有日志都根據這個靜態設置來決定是否輸出。

總結:

靜態成員變量和靜態成員函數讓我們在 C++ 中能更方便地管理共享數據和功能。它的一個關鍵特點是:它們屬于整個類,而不是某個具體的對象。所以,多個對象之間能共享同一份數據,避免了每個對象都要獨占一份的情況。這不僅節省內存,也讓代碼更加簡潔高效。

今天我們了解了靜態成員變量和靜態成員函數的基本用法,知道了如何共享數據、訪問靜態成員,還明白了為什么靜態成員函數不能訪問非靜態的成員。

責任編輯:武曉燕 來源: 跟著小康學編程
相關推薦

2023-03-21 15:21:52

開發程序設計static

2010-01-18 18:04:28

靜態成員

2010-01-18 16:42:13

C++類

2010-02-01 17:31:06

C++類成員

2024-02-22 18:07:17

C++靜態成員代碼

2010-01-19 18:35:12

靜態成員

2011-07-20 16:09:08

C++

2023-10-07 15:53:05

C/C++靜態變量內存

2009-05-26 09:31:00

C++重載覆蓋

2021-06-18 12:30:36

C++函數指針編程語言

2024-04-08 11:35:34

C++static關鍵字

2010-02-03 11:01:18

C++類靜態成員初始化

2010-01-21 14:19:44

C++靜態成員

2023-12-04 10:57:52

函數C++

2024-02-26 10:36:59

C++開發關鍵字

2011-08-10 17:16:01

Objective-C靜態變量

2010-01-13 17:28:32

SOHO交換機

2011-04-07 16:34:05

staticC++

2010-02-03 15:27:26

C++ static

2010-01-26 15:51:06

C++變量
點贊
收藏

51CTO技術棧公眾號

亚洲日韩视频| 亚洲精品aⅴ| 国产精品人妖ts系列视频| 成人免费淫片aa视频免费| 欧美成人三级在线观看| 老司机aⅴ在线精品导航| 欧美亚洲高清一区二区三区不卡| 熟妇熟女乱妇乱女网站| 污视频在线免费| 久久丁香综合五月国产三级网站| 97国产在线视频| 久久嫩草捆绑紧缚| 91美女视频在线| 国产精品综合在线视频| 国产91免费看片| 无码精品一区二区三区在线播放| 国产精品xxx| 亚洲成人精品一区| 在线成人性视频| 国产在线观看第一页| 中文字幕一区二区精品区| 亚洲天堂色网站| 成人免费看片载| 国产精品99久久久久久董美香 | 久久久久久久久久久网| 精品视频久久| 精品视频在线播放色网色视频| 欧美激情国内自拍| 成人午夜亚洲| 黑人欧美xxxx| 分分操这里只有精品| 黄色网在线看| 国产精品日产欧美久久久久| 免费99视频| 国产精品suv一区| 九热爱视频精品视频| 欧美大黄免费观看| 五月天视频在线观看| 欧美在线va视频| 精品日本高清在线播放| 日韩a级黄色片| 精品孕妇一区二区三区| 国产精品全国免费观看高清| 日本高清不卡一区二区三| 国产一卡二卡三卡| 99re国产精品| 亚洲人成网站在线播| 国产草草浮力影院| 草草视频在线一区二区| 日韩区在线观看| 国产精品入口芒果| jizz性欧美| 亚洲丝袜精品丝袜在线| 在线视频不卡国产| 秋霞午夜在线观看| 18成人在线视频| 中文字幕一区二区三区精彩视频| 日韩免费啪啪| 丁香婷婷综合色啪| 91久久精品一区| 91国在线视频| 奇米四色…亚洲| 成人网在线免费看| 精品人妻一区二区三区四区不卡| 国产高清亚洲一区| yellow视频在线观看一区二区| 亚洲av无码国产精品永久一区| 国产aⅴ精品一区二区三区色成熟| a级国产乱理论片在线观看99| 午夜精品久久久久久久99| 国产成人99久久亚洲综合精品| 国产精品二区在线| 亚洲AV成人无码一二三区在线 | 久久久久久久久久久久久久久| 日韩av中字| 欧美专区日韩专区| 男人c女人视频| 高清电影在线免费观看| 狠狠色狠狠色综合日日五| 国产视频在线视频| 91精品国产色综合久久不卡粉嫩| 欧美一级夜夜爽| 亚洲一级av无码毛片精品 | 亚洲高清视频一区| 超碰在线观看免费版| 午夜一区二区三区视频| 一本一道久久a久久精品综合 | 国产精品嫩草99a| 日本久久高清视频| 欧亚av在线| 欧美视频日韩视频| 日本大胆人体视频| 蜜桃麻豆影像在线观看| 在线观看亚洲精品视频| 四虎国产精品永久免费观看视频| 免费日韩一区二区三区| 色系列之999| 日本少妇裸体做爰| 免费久久精品视频| 国产一区二区三区无遮挡| 国产一区二区麻豆| 成人激情动漫在线观看| 亚洲欧美日韩国产yyy| 欧美人与禽猛交乱配| 色www精品视频在线观看| 性生活一级大片| 国产在线日韩精品| 国内精品美女av在线播放| 一级片在线免费观看视频| av毛片久久久久**hd| 中文字幕中文字幕99| 中文字幕在线直播| 欧美va日韩va| 国产一级黄色录像| 99久久婷婷国产综合精品电影√| 欧美一级大片在线观看| 亚洲伦理在线观看| 椎名由奈av一区二区三区| 久久久久久久久久福利| 国产调教精品| 欧美成人剧情片在线观看| 久久久久久久久久一级| 97精品久久久久中文字幕| 九九久久九九久久| 亚洲人成777| 中文字幕日韩精品在线| 国产白丝一区二区三区| 国产亚洲综合精品| 国产精品9999久久久久仙踪林 | 亚州精品视频| 午夜精品久久久久久久男人的天堂 | 久久精品老司机| 国产精品mv在线观看| 国产综合香蕉五月婷在线| 国产51人人成人人人人爽色哟哟 | 久久精品这里都是精品| 欧美亚洲日本一区二区三区 | 精品国产污污免费网站入口| 国产精品白丝喷水在线观看| 免费在线一区观看| 日韩久久在线| 在线中文字幕播放| 亚洲美女在线看| 日韩色图在线观看| 97精品国产露脸对白| 日韩少妇内射免费播放| 久久久久观看| 国产91精品不卡视频| 艳母动漫在线看| 欧美日韩一区免费| 粉嫩av蜜桃av蜜臀av| 免费日韩av片| 日本10禁啪啪无遮挡免费一区二区| 天堂√中文最新版在线| 日韩精品视频观看| 伦av综合一区| 久久综合久色欧美综合狠狠| 国产欧美在线一区| 国精一区二区| 国产在线观看精品| 18视频在线观看| 精品国产91洋老外米糕| 国产成人免费观看视频 | 神马午夜精品91| 国产一区二区在线免费观看| 欧美 日韩 国产精品| 风间由美中文字幕在线看视频国产欧美| 国内外成人免费激情在线视频网站 | 91桃色在线观看| 亚洲欧美国产高清va在线播| 波多野结衣视频在线观看| 国产精品久久久久一区| 性久久久久久久久久久久久久| 欧美粗暴jizz性欧美20| 国产一区视频观看| 日韩另类视频| 九九久久精品一区| 性高潮久久久久久久久久| 91精品办公室少妇高潮对白| 色欲人妻综合网| 国产精品1024久久| 久久久久久久午夜| 色综合久久网| 国产超碰91| 影视一区二区三区| 超碰97人人做人人爱少妇| 天天干天天舔天天射| 欧美在线一区二区| 欧美成人精品激情在线视频| 久久蜜桃av一区精品变态类天堂 | 国产精品久久久久久久乖乖| 深爱激情综合网| 成人在线观看91| 日本一区免费网站| 久久久久久久久久国产| youjizz在线播放| 精品国产99国产精品| 中文精品久久久久人妻不卡| 亚洲激情网站免费观看| 中文字幕被公侵犯的漂亮人妻| 国产一区亚洲一区| 麻豆av免费在线| 国产精品多人| 在线综合视频网站| 亚洲综合福利| 丁香五月网久久综合| 国产精品99精品一区二区三区∴| 久久人91精品久久久久久不卡 | 欧美激情国产高清| 91成人高清| 亚洲精品丝袜日韩| 成人毛片在线精品国产| 欧美日本精品一区二区三区| 丝袜美腿中文字幕| 国产激情精品久久久第一区二区 | 蜜桃视频成人在线观看| 久久av导航| 国产欧美综合精品一区二区| 国产欧美视频在线| 国产精品男人爽免费视频1| 白浆视频在线观看| 欧美日韩第一页| 麻豆传媒在线免费| 中文字幕在线国产精品| 毛片网站在线观看| 日韩精品免费在线播放| 欧美性猛交 xxxx| 日韩美女一区二区三区| 国产麻豆91视频| 欧美在线三级电影| 精品免费囯产一区二区三区| 性做久久久久久免费观看欧美| 男人操女人的视频网站| 综合分类小说区另类春色亚洲小说欧美 | 久久国产精品影片| 免费在线观看av片| 久久韩国免费视频| 在线免费观看黄| 国产亚洲美女久久| 国产在线一二| 一区二区福利视频| caoporn国产精品免费视频| 国产午夜精品全部视频播放| 黄色小视频在线免费观看| 国产丝袜一区视频在线观看| 午夜视频在线播放| 日韩成人在线视频| 欧美性孕妇孕交| 亚洲人成网7777777国产| 国产精品久久久久久久龚玥菲| 亚洲视频在线观看免费| 成人jjav| 久久久精品久久久| 在线看一级片| 久久免费国产视频| 中文字幕在线中文字幕在线中三区| 91av在线视频观看| 韩国精品主播一区二区在线观看 | 欧美激情偷拍自拍| 亚洲淫片在线视频| 麻豆国产精品| 国产成人免费电影| 米奇精品关键词| 麻豆精品视频| 久久婷婷蜜乳一本欲蜜臀| 天堂v在线视频| 国语对白精品一区二区| 精品无码一区二区三区在线| 免费在线欧美黄色| jizzzz日本| 国产成人免费在线观看不卡| 无码精品一区二区三区在线播放| 国产清纯在线一区二区www| 国产精品视频在| 亚洲曰韩产成在线| 日韩欧美在线视频播放| 自拍偷自拍亚洲精品播放| 国产无套内射又大又猛又粗又爽| 欧美日韩国产精品一区二区三区四区 | 欧美日本一区| 国产成人a亚洲精v品无码| 蜜乳av一区二区| 人妻激情偷乱频一区二区三区| 久久精品一级爱片| 波多野结衣亚洲色图| 大伊人狠狠躁夜夜躁av一区| 国产精品毛片久久久久久久av| 亚洲成人激情图| 午夜视频在线看| 97国产精品人人爽人人做| 亚洲伦理网站| 精品无人区一区二区三区竹菊| 欧美a级成人淫片免费看| 婷婷五月综合缴情在线视频| 麻豆91精品视频| wwwwxxxx日韩| 丁香激情综合五月| 永久免费av无码网站性色av| 亚洲一区视频在线| 国产九色91回来了| 亚洲国产成人久久综合| 免费黄网在线观看| 国产69久久精品成人| 欧美日韩黄色| 水蜜桃一区二区三区| 伊人成人在线视频| 妞干网在线视频观看| 麻豆精品视频在线| avtt香蕉久久| 怡红院av一区二区三区| 欧美性受xxx黑人xyx性爽| 亚洲国产精品小视频| 国产不卡在线| 国产精品久久久久久久久久小说| 老司机在线精品视频| 奇米777四色影视在线看| 日本成人在线不卡视频| 中文字幕日韩三级片| 亚洲国产一区二区三区青草影视| 国产又黄又粗又硬| 正在播放欧美一区| **在线精品| 欧美激情视频一区二区三区| 精品999成人| 制服.丝袜.亚洲.中文.综合懂| 国产精品传媒视频| 在线观看国产小视频| 亚洲视频第一页| 粉嫩一区二区三区| 欧美日韩一区二区视频在线观看 | 韩国av免费在线观看| 欧美精品在线观看91| 国产日韩一区二区三免费高清| 日韩欧美三级电影| 丝袜美腿成人在线| 男人舔女人下部高潮全视频| 色综合久久99| 欧美日本网站| 日本精品久久久| 亚洲动漫精品| 黄色高清无遮挡| 国产日韩在线不卡| 进去里视频在线观看| 爽爽爽爽爽爽爽成人免费观看| 国产麻豆一区| 亚洲欧美日产图| 激情综合色丁香一区二区| 欧美一区免费观看| 欧美成人一区二区| а_天堂中文在线| 精品乱码一区二区三区| 亚洲综合电影一区二区三区| 亚洲永久精品ww.7491进入| 一本色道久久综合亚洲精品按摩| 欧洲伦理片一区 二区 三区| 国产精品999| 试看120秒一区二区三区| 欧美国产一区二区在线| 免费看黄裸体一级大秀欧美| 免费在线观看a视频| 欧美日韩亚洲丝袜制服| 精品51国产黑色丝袜高跟鞋| 91中文在线视频| 今天的高清视频免费播放成人| 黄色短视频在线观看| 一本大道久久精品懂色aⅴ| 在线免费观看黄色网址| 亚洲影院高清在线| 亚洲人成久久| 波多野在线播放| 欧美精品色综合| 好久没做在线观看| 日本一区高清在线视频| 精品一区二区三区在线播放视频| 国产一区二区视频在线观看免费| 精品国产亚洲在线| 色综合天天色| 中文字幕第50页| 久久嫩草精品久久久久| 91亚洲国产成人久久精品麻豆| 欧美激情小视频| 精品在线观看入口| 婷婷激情小说网| 精品久久久久久国产| jizz在线观看| 国产精品我不卡| 秋霞影院一区二区| 久久久无码一区二区三区| 亚洲欧美视频在线| 久久天堂久久| www日韩视频| 亚洲一区二区三区激情| 成年人在线观看| 国产女主播一区二区| 人人狠狠综合久久亚洲| 国产一级片免费看| 色婷婷综合久久久久| 婷婷综合一区| 国产成人精品综合久久久久99| 欧美性猛交xxxx乱大交极品|