static的了解

【關鍵字】static 使用總結_c++ static關鍵字-CSDN博客

本文來自上面的文章,這里用于學習,謝謝大佬的分享!!!

非原創!!!

1.一個項目中創建main.cpp和demo.cpp

(1)main.cpp和demo.cpp中都寫入:

void func(){
cout<<"hello"<<endl;
}

編譯報錯?

(2)在一個文件中定義函數,在另一個文件中引入該函數的聲明。

main.cpp

void func(){
cout<<"hello"<<endl;
}

demo.cpp

extern void func();

?可以!

(3)只希望func()函數在main.cpp中使用,不可以被demo.cpp使用。

main.cpp

static void func(){
cout<<"hello"<<endl;
}

添加static關鍵字,此時函數為靜態函數,作用域由之前的整個項目內的文件變為只能在本文件內訪問。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

此時可以在demo.cpp中定義同名函數func(),因為作用域不同,互不影響。

2.在全局變量前添加static

作用域縮小為只能在本文件中訪問,生命周期不變。

全局變量在外部文件中可以使用extern訪問,但全局靜態變量在外部不可訪問。

3.局部變量前添加static

局部變量生命周期變為與全局變量一致,隨進程一起結束,作用域不變。

4.類的靜態成員變量

該靜態變量只能在類內部定義,外部聲明。

class A
{
public:static int n;
};// 類的靜態成員變量只能在類外部定義(類外部定義時不能加static關鍵字),類內部聲明
int A::n = 10;int main()
{// 1、通過示例對象訪問靜態成員變量A a;cout << a.n << endl;// 輸出10// 2、因為類的靜態成員變量是所有該類的對象所共享的//    所以也可以通過類名直接訪問cout << A::n <<endl;// 輸出10return 0;
}

靜態成員變量必須設初值,否則編譯失敗。

私有(保護)靜態成員變量不可通過類名::變量名訪問

5.類的靜態成員函數

函數內部只能訪問類的靜態成員。

(1)類內部,外部都可以定義類的靜態成員函數

class A{
public:
static void try()
{
cout<<"hello"<<endl;
}
}
class A{
public:
static void try();
}
void A::try()
{
cout<<"hello"<<endl;
}

? ?(2)靜態成員函數沒有this指針,不可訪問非靜態成員。

? ?(3)static成員函數不能被virtual修飾。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

虛函數的實現是為每一個對象分配一個vptr指針,vptr通過this指針來調用。

虛函數調用關系:this->vptr--->ctable--->virtual function

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14888.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FL Studio2025中文最新版本專業編曲軟件有哪些新功能?

FL Studio 21&#xff0c;也被音樂制作愛好者親切地稱為“水果編曲軟件”&#xff0c;是比利時的Image-Line公司研發的一款完整的音樂制作環境或數字音頻工作站&#xff08;DAW&#xff09;。自從1990年代推出以來&#xff0c;FL Studio 以其直觀的用戶界面、豐富的插件支持和強…

Rust分割字符串的常見操作方法

在Rust編程語言中&#xff0c;分割字符串是一個常見的操作&#xff0c;可以通過多種方式實現。以下是一些常用的方法&#xff1a; 使用split方法&#xff1a; split方法可以按照指定的字符或字符序列來分割字符串。它返回一個迭代器&#xff0c;可以迭代分割后的字符串片段。 l…

玩機社區 - 2024年最美社區源碼開源

玩機社區 - 2024年最美社區源碼開源 教程源碼文檔都內置到壓縮包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi

邏輯分析儀 - 采樣率/采樣深度

采樣深度&#xff08;Sampling Depth&#xff09; 采樣深度指的是邏輯分析儀在一次捕獲過程中可以記錄的最大樣本數量。簡單來說&#xff0c;采樣深度越大&#xff0c;邏輯分析儀可以記錄的數據量就越多。這對于分析長時間的信號變化或復雜的信號序列非常重要。 采樣率&#…

2024年5月23日 (周四) 葉子游戲新聞

《Unclogged》Steam頁面上線 馬桶主題恐怖逃脫解謎Brody制作并發行&#xff0c;一款奇葩創意馬桶主題恐怖逃脫解謎新游《Unclogged》Steam頁面上線&#xff0c;本作暫不支持中文。 Meta人工智能主管楊立昆 大語言模型不會達到人類智能水平IT之家今日&#xff08;5月23日&#x…

QEMU啟動Linux內核

在QEMU環境下啟動linux內核命令如下&#xff1a; QEMU_AUDIO_DRVnone qemu-system-arm -m 256M -nographic -M versatilepb -kernel /home/yukeyang/myfile/linux-6.6.30/arch/arm/boot/zImage -append "consolettyAMA0 rdinit/bin/sh" -dtb arch/arm/boot/dts/arm/…

數據防泄漏系統哪個好用,給文件加密的軟件

數據防泄露&#xff08;Data Leakage Prevention&#xff0c;DLP&#xff09;是指通過一定的技術手段&#xff0c;防止組織指定&#xff08;重要或敏感的&#xff09;數據或信息資產以違反安全策略規定的形式流出組織的一種策略。 信息防泄露以文檔加密技術為核心&#xff0c;…

順序表及其應用

掌握順序表的初始化&#xff0c;初始化、查找、插入、刪除、遍歷、查看實際長度等操作 內容 從鍵盤輸入n個整數&#xff0c;創建順序表。【創建長度為n的順序表】從鍵盤輸入1個整數x&#xff0c;在順序表中查找x所在的位置。若找到&#xff0c;輸出該元素所在的位置(即數組下標…

SQL開窗函數

文章目錄 概念&#xff1a;語法&#xff1a;常用的窗口函數及示例&#xff1a;求平均值&#xff1a;AVG() &#xff1a;求和&#xff1a;SUM():求排名&#xff1a;移動平均計數COUNT():求最大MXA()/小MIN()值求分區內的最大/最小值求當前行的前/后一個值 概念&#xff1a; 開窗…

同旺科技 FLUKE ADPT 隔離版發布 ---- 說明書

所需設備&#xff1a; 1、FLUKE ADPT 隔離版 內附鏈接&#xff1b; 應用于&#xff1a;福祿克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 應用于&#xff1a;福祿克Fluke 15B / 17B / 18B

利用文本圖像對比模型進行虛假信息檢測

Harnessing the Power of Text-image Contrastive Models for Automatic Detection of Online Misinformation 論文地址: CVPR 2023 Open Access Repositoryhttps://openaccess.thecvf.com/content/CVPR2023W/WMF/html/Chen_Harnessing_the_Power_of_Text-Image_Contrastive_…

51單片機學習(4)3-1 獨立按鍵控制LED亮滅

#include<REGX52.H> void main() { //P20xFE; P2_01; while(1) { if(P3_10) { P2_00&#xff1b; } else { P2_01&#xff1b; } } }

力扣周賽398題解

特殊數組Ⅰ 如果數組的每一對相鄰元素都是兩個奇偶性不同的數字&#xff0c;則該數組被認為是一個 特殊數組 。 Aging 有一個整數數組 nums。如果 nums 是一個 特殊數組 &#xff0c;返回 true&#xff0c;否則返回 false。 示例 1&#xff1a; 輸入&#xff1a;nums [1] …

SEO:屏蔽流氓蜘蛛抓取

解決屏蔽流氓蜘蛛抓取&#xff0c;如MJ12bot 、DotBot 、BLEXBot 、PetalBot 、DataForSeoBot 1、robots文件屏蔽 User-agent: MJ12bot Disallow: / User-agent:DotBot Disallow: / User-agent:BLEXBot Disallow: / User-agent:PetalBot Disallow: / User-agent:DataForSeoBot…

【C++】<知識點> 標準和文件的輸入輸出

目錄 一、輸入輸出操作 1. 相關的類 2. 標準流對象 3. istream類的成員函數 二、流操縱算子 1. 整數流的基數 2. 浮點數精度的流操縱算子 3. 域寬的流操縱算子 4. 其他的流操縱算子 5. 用戶自定義流操縱算子 三、文件讀寫 1. 文本文件的讀寫 2. 二進制文件的讀寫 3. 文件讀寫…

vue 點擊復制文本到剪貼板

一、首先在vue文件的template中定義復制按鈕 <div size"small" v-if"item.prop jadeCode" class"cell-container"><span>{{ scope.row.jadeCode }}</span> <button click"handleCopy(scope.row.jadeCode)" clas…

一周開發一個客服工單系統

開發一個客服工單系統在一周內完成&#xff0c;需要詳細的計劃和高效的執行。以下是一個詳細的開發計劃&#xff0c;涵蓋每天的主要任務和技術棧選擇&#xff1a; 演示效果&#xff1a;gofly.v1kf.com 技術棧選擇 前端&#xff1a;React.js 或 Vue.js后端&#xff1a;Go (Gin)數…

K8s是如何Watch的?

1. 概述 進入 K8s 的世界&#xff0c;會發現幾乎所有對象都被抽象為了資源(Resource)&#xff0c;包括 K8s Core Resources(Pod, Service, Namespace 等)、CRD、APIService 擴展的資源類型。同時 K8s 底層將這些資源統一抽象為了 RESTful 的存儲(Storage)&#xff0c;一方面服…

jellyfish安裝及使用(Bioinformatics工具-020)

01 背景 基因組survey以測序技術為基礎&#xff0c;基于小片段文庫的低深度測序&#xff0c;通過K-mer分析&#xff0c;快速獲得基因組大小、雜合度、重復序列比例等基本信息&#xff0c;為制定該物種的全基因組de novo測序策略提供有效依據。 jellyfish (水母) 是一個用于快…

Docker-鏡像遷移的三種方式=>備份恢復公有倉庫私有倉庫

制作好的鏡像要被別人使用&#xff0c;有三種方式&#xff1a; 1.先備份鏡像&#xff0c;別人通過u盤或者其它方式拷貝后&#xff0c;再恢復鏡像&#xff0c;這種方式比較麻煩 2.將制作的鏡像上傳到公共鏡像倉庫&#xff0c;被別人拉取后使用&#xff0c;但可能存在網絡不通暢或…