最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ static的使用方法及不同含義講解

 更新時間:2025年04月18日 16:47:11   作者:Vesan,  
在 C++ 里,static 是一個用途廣泛的關(guān)鍵字,在不同場景下有不同含義,下面通過實(shí)例代碼介紹C++ static的使用方法及不同含義講解,感興趣的朋友一起看看吧

在 C++ 里,static 是一個用途廣泛的關(guān)鍵字,在不同場景下有不同含義,下面為你詳細(xì)介紹:

1. 全局變量前的 static

當(dāng) static 用在全局變量前時,它會改變變量的鏈接屬性。

  • 默認(rèn)全局變量:默認(rèn)的全局變量具有外部鏈接屬性,這意味著在一個文件中定義的全局變量可以在其他文件中通過 extern 關(guān)鍵字聲明后使用。
  • 靜態(tài)全局變量:在全局變量前加上 static 關(guān)鍵字后,變量變?yōu)殪o態(tài)全局變量,具有內(nèi)部鏈接屬性,只能在定義它的文件中使用,其他文件無法訪問。

示例代碼

// file1.cpp
#include <iostream>
// 靜態(tài)全局變量
static int staticGlobalVar = 10; 
// 普通全局變量
int globalVar = 20; 
void printStaticGlobalVar() {
    std::cout << "Static global variable: " << staticGlobalVar << std::endl;
}
// file2.cpp
#include <iostream>
// extern int staticGlobalVar; // 錯誤,無法在其他文件中訪問靜態(tài)全局變量
extern int globalVar;
int main() {
    // std::cout << staticGlobalVar << std::endl; // 錯誤
    std::cout << "Global variable: " << globalVar << std::endl;
    return 0;
}

2. 局部變量前的static

當(dāng) static 用于局部變量時,它會改變變量的存儲方式和生命周期。

  • 普通局部變量:普通局部變量存儲在棧上,在函數(shù)調(diào)用結(jié)束后會被銷毀。
  • 靜態(tài)局部變量:靜態(tài)局部變量存儲在全局?jǐn)?shù)據(jù)區(qū),只在第一次調(diào)用函數(shù)時初始化,之后再次調(diào)用函數(shù)時,靜態(tài)局部變量會保留上一次調(diào)用結(jié)束時的值。

示例代碼

#include <iostream>
void staticLocalVariableExample() {
    static int staticLocalVar = 0; // 靜態(tài)局部變量
    int normalLocalVar = 0; // 普通局部變量
    std::cout << "Static local variable: " << staticLocalVar << std::endl;
    std::cout << "Normal local variable: " << normalLocalVar << std::endl;
    staticLocalVar++;
    normalLocalVar++;
}
int main() {
    staticLocalVariableExample();
    staticLocalVariableExample();
    return 0;
}

3. 函數(shù)前的 static

當(dāng) static 用于函數(shù)前時,它會改變函數(shù)的鏈接屬性。

  • 默認(rèn)全局函數(shù):默認(rèn)的全局函數(shù)具有外部鏈接屬性,可以在其他文件中通過 extern 關(guān)鍵字聲明后調(diào)用。
  • 靜態(tài)函數(shù):在函數(shù)前加上 static 關(guān)鍵字后,函數(shù)變?yōu)殪o態(tài)函數(shù),具有內(nèi)部鏈接屬性,只能在定義它的文件中調(diào)用,其他文件無法訪問。

示例代碼

// file1.cpp
#include <iostream>
// 靜態(tài)函數(shù)
static void staticFunction() {
    std::cout << "This is a static function." << std::endl;
}
// 普通函數(shù)
void normalFunction() {
    std::cout << "This is a normal function." << std::endl;
}
// file2.cpp
#include <iostream>
// extern void staticFunction(); // 錯誤,無法在其他文件中調(diào)用靜態(tài)函數(shù)
extern void normalFunction();
int main() {
    // staticFunction(); // 錯誤
    normalFunction();
    return 0;
}

4. 類的靜態(tài)成員變量

類的靜態(tài)成員變量屬于整個類,而不是類的某個對象,所有對象共享同一個靜態(tài)成員變量。

  • 存儲位置:靜態(tài)成員變量存儲在全局?jǐn)?shù)據(jù)區(qū),不隨對象的創(chuàng)建和銷毀而分配和釋放內(nèi)存。
  • 初始化:靜態(tài)成員變量必須在類外進(jìn)行初始化。

示例代碼

#include <iostream>
class MyClass {
public:
    static int staticMemberVar; // 類內(nèi)聲明靜態(tài)成員變量
    int normalMemberVar;
    MyClass(int value) : normalMemberVar(value) {}
};
// 類外初始化靜態(tài)成員變量
int MyClass::staticMemberVar = 0; 
int main() {
    MyClass obj1(10);
    MyClass obj2(20);
    obj1.staticMemberVar = 30;
    std::cout << "obj2.staticMemberVar: " << obj2.staticMemberVar << std::endl; // 輸出 30
    return 0;
}

5. 類的靜態(tài)成員函數(shù)

類的靜態(tài)成員函數(shù)屬于整個類,而不是類的某個對象,可以直接通過類名調(diào)用,也可以通過對象調(diào)用。

  • this 指針:靜態(tài)成員函數(shù)沒有 this 指針,因此不能訪問類的非靜態(tài)成員變量和非靜態(tài)成員函數(shù),只能訪問類的靜態(tài)成員變量和靜態(tài)成員函數(shù)。

示例代碼

#include <iostream>
class MyClass {
public:
    static int staticMemberVar;
    int normalMemberVar;
    static void staticMemberFunction() {
        staticMemberVar = 10; // 可以訪問靜態(tài)成員變量
        // normalMemberVar = 20; // 錯誤,不能訪問非靜態(tài)成員變量
        std::cout << "Static member function called. staticMemberVar: " << staticMemberVar << std::endl;
    }
};
int MyClass::staticMemberVar = 0;
int main() {
    MyClass::staticMemberFunction(); // 通過類名調(diào)用靜態(tài)成員函數(shù)
    MyClass obj;
    obj.staticMemberFunction(); // 通過對象調(diào)用靜態(tài)成員函數(shù)
    return 0;
}

綜上所述,static 關(guān)鍵字在不同的位置有不同的含義,主要體現(xiàn)在改變變量和函數(shù)的鏈接屬性、存儲方式、生命周期以及實(shí)現(xiàn)類的共享成員等方面。

到此這篇關(guān)于C++ static的使用方法及不同作用的文章就介紹到這了,更多相關(guān)C++ static使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?左值、右值、左值引用、右值引用的用途及區(qū)別

    C++?左值、右值、左值引用、右值引用的用途及區(qū)別

    本文給大家介紹了C++左值、右值、左值引用、右值引用用途及區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-09-09
  • C/C++實(shí)現(xiàn)精靈游戲的示例代碼

    C/C++實(shí)現(xiàn)精靈游戲的示例代碼

    這篇文章主要為大家介紹了如何利用C++實(shí)現(xiàn)簡單的精靈游戲,文中的示例代碼講解詳細(xì),有一定的參考價值,感興趣的小伙伴可以了解一下
    2022-06-06
  • 實(shí)例詳解C++中指針與引用的區(qū)別

    實(shí)例詳解C++中指針與引用的區(qū)別

    引用是C++引入的重要機(jī)制(C語言沒有引用),它使原來在C中必須用指針來實(shí)現(xiàn)的功能有了另一種實(shí)現(xiàn)的選擇,在書寫形式上更為簡潔,那么引用的本質(zhì)是什么,它與指針又有什么關(guān)系呢?這篇文章主要給大家介紹了關(guān)于C++中指針與引用的區(qū)別,需要的朋友可以參考下
    2021-07-07
  • 淺談C語言中的指針和數(shù)組有什么區(qū)別

    淺談C語言中的指針和數(shù)組有什么區(qū)別

    C語言中的指針和數(shù)組是兩個重要的數(shù)據(jù)結(jié)構(gòu),它們在內(nèi)存管理和數(shù)據(jù)存儲方面有許多相似之處,但也存在一些關(guān)鍵的區(qū)別,本文就來介紹一下C語言中的指針和數(shù)組有什么區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • C++ 實(shí)現(xiàn)靜態(tài)鏈表的簡單實(shí)例

    C++ 實(shí)現(xiàn)靜態(tài)鏈表的簡單實(shí)例

    這篇文章主要介紹了C++ 實(shí)現(xiàn)靜態(tài)鏈表的簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++解析特殊符號tab和換行符號詳情

    C++解析特殊符號tab和換行符號詳情

    這篇文章主要給大家介紹的是C++解析一些特殊符號tab、換行符號的一些相關(guān)資料,需要的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 基于C語言實(shí)現(xiàn)點(diǎn)菜系統(tǒng)

    基于C語言實(shí)現(xiàn)點(diǎn)菜系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)點(diǎn)菜系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    嵌入式C語言查表法在項(xiàng)目中的應(yīng)用

    今天小編就為大家分享一篇關(guān)于嵌入式C語言查表法在項(xiàng)目中的應(yīng)用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 從匯編看c++中變量類型的深入分析

    從匯編看c++中變量類型的深入分析

    本篇文章是對c++中的變量類型進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • 利用C語言實(shí)現(xiàn)2048小游戲的方法

    利用C語言實(shí)現(xiàn)2048小游戲的方法

    2048是比較流行的一款數(shù)字游戲,相信對大家來說都不陌生,這篇文章給大家分享了利用C語言實(shí)現(xiàn)2048小游戲的方法,對大家學(xué)習(xí)理解C語言具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2016-10-10

最新評論

庐江县| 九台市| 孙吴县| 双江| 五常市| 新郑市| 临澧县| 黄浦区| 武邑县| 嘉荫县| 长宁县| 垫江县| 洪湖市| 丰县| 乌审旗| 临邑县| 连南| 大安市| 永清县| 临湘市| 南川市| 河南省| 通州区| 合阳县| 汝阳县| 巴中市| 稷山县| 颍上县| 余干县| 灵宝市| 洱源县| 天镇县| 左权县| 五寨县| 新密市| 乐安县| 武胜县| 铜梁县| 永安市| 内乡县| 电白县|