日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++关键字 static 和 const

發(fā)布時間:2025/3/12 c/c++ 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++关键字 static 和 const 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C/C++關(guān)鍵字 static 和 const


一、關(guān)鍵字static

參考:https://www.cnblogs.com/BeyondAnyTime/p/2542315.html


1. 靜態(tài)全局變量和函數(shù)

  • 生命周期(整個程序運(yùn)行過程)不變,作用域限制在本文件中,全局變量在別的文件加extern 無效,別的文件即使include頭文件也不能使用該頭文件中的靜態(tài)函數(shù)。
//靜態(tài)全局變量 static a;//靜態(tài)函數(shù) static void myFunc() {printf("this is a static function") }

2. 靜態(tài)局部變量

  • 生命周期改變(由函數(shù)運(yùn)行過程變?yōu)檎麄€程序運(yùn)行過程),作用域不變(函數(shù)內(nèi)部有效)。且靜態(tài)局部變量只執(zhí)行一次內(nèi)存分配,只進(jìn)行一次初始化。
//靜態(tài)局部變量 //每次調(diào)用該函數(shù)a都會加1,不會被重新初始化為0。 void myFunc() {static int a=0;a++; }

3. 靜態(tài)類成員變量和函數(shù)

  • 靜態(tài)類成員變量屬于整個類,對于該類的所有對象只維持一份拷貝。
  • 靜態(tài)類成員函數(shù)屬于整個類共有,這個函數(shù)不接受this指針,且只能訪問類的靜態(tài)成員。
//類 class MyClass {//聲明靜態(tài)成員變量static int a;//聲明靜態(tài)類成員函數(shù)static void myFunc(); }; //定義并初始化靜態(tài)成員變量 int MyClass::a=0; //定義靜態(tài)成員函數(shù)時不用加static void MyClass::myFunc() { }

二、關(guān)鍵字const

參考:https://www.cnblogs.com/icemoon1987/p/3320326.html


1. const變量

  • const 變量值是只讀的,不能被改變,必須同時進(jìn)行初始化。
//聲明并初始化 const int a=20;

2. const 指針

  • const 指針分為三種,分別是:指針指向的內(nèi)容不能變,指針地址不能變,兩者都不能變,就近原則。
//指針指向的內(nèi)容不能變 const int * a; int const *a//指針地址不能變 int * const a//指針指向的內(nèi)容和指針地址都不能變 const int * const a;

3. const修飾函數(shù)參數(shù)

  • 將函數(shù)參數(shù)聲明為 const 類型,表示對于函數(shù)來說,這個參數(shù)是一個 const 變量。函數(shù)內(nèi)部不能夠改變這個參數(shù)的值。
  • 將函數(shù)參數(shù)聲明為 const 類型的指針 ,允許上層使用“指向 const 變量的指針” 或“普通指針”作為參數(shù),調(diào)用函數(shù)。(如果函數(shù)參數(shù)聲明的是普通指針,則不允許使用指向 const 變量的指針作為參數(shù)調(diào)用)
// const變量作為函數(shù)參數(shù) void myFunc( const int a ) {a = 5; // 編譯錯誤:不允許修改const變量printf("a = %d\n", a); }// const指針作為函數(shù)參數(shù) void myFunc( const int *a ) {*a = 5; // 編譯錯誤:不允許修改const指針printf("*a = %d\n", *a); }

4. const 修飾返回值

  • 函數(shù)的返回值為一個 const 變量,不能被修改。主要用于函數(shù)返回const引用。
// 返回 const 引用的函數(shù) const int& myFunc(int a) {return a; }int main( int argc, char *argv[]) {myFunc(2)=3; // 編譯錯誤,返回的引用為 const 引用,不允許修改。 }

4. const對象

  • const類對象指的是該對象對象不能改變?nèi)魏纬蓡T變量的值(不能直接改變成員變量
    也不能通過成員函數(shù)改變成員變量),不能調(diào)用任何非const成員函數(shù)
//實(shí)例化const對象const MyClass object;

5. const成員變量和成員函數(shù)

  • const 成員變量指的是類中的成員變量為只讀,不能夠被修改(包括在類外部和類內(nèi)部)。const 成員變量必須被初始化(在相關(guān)構(gòu)造函數(shù)的初始化列表中),初始化后,不能夠被修改。靜態(tài) const 成員變量需要在類外部單獨(dú)定義并初始化(可定義在頭文件)
  • const成員函數(shù)指的是,此函數(shù)不應(yīng)該修改任何成員變量,除非成員變量被 mutable 修飾符修飾。傳給const成員函數(shù)的this指針,是指向 const 對象的const 指針。
class MyClass { public:MyClass() {};~MyClass();const int c; //const成員變量static const int sc; //static const 成員變量int not_m; // 不帶 mutable 修飾的成員變量mutable int m; // 帶 mutable 修飾的成員變量void myFunc(int a); // 非 const 成員函數(shù)void myFunc_const(int a) const; // const 成員函數(shù) };const int MyClass::sc = 1; // 靜態(tài)常量成員需要在類外進(jìn)行單獨(dú)定義和初始化MyClass::MyClass(): c(10){} // const 成員變量在構(gòu)造函數(shù)初始化列表中初始化void MyClass::myFunc(int a) {not_m = a; //正確m = a; //正確c = a; //編譯錯誤,const 成員變量不能被修改return; }void MyClass::myFunc_const(int a) const {not_m = a; // 編譯錯誤,const 成員函數(shù)不能修改一般的成員變量m = a; // 正常,const成員函數(shù)能修改被 mutable 修飾的成員變量return; }

總結(jié)

以上是生活随笔為你收集整理的C/C++关键字 static 和 const的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。