const與static的區別
static
- static區域性變數 將一個變數宣告為函式的區域性變數,那麼這個區域性變數在函式執行完成之後不會被釋放,而是繼續保留在記憶體中
- static 全域性變數 表示一個變數在當前檔案的全域性內可訪問
- static 函式 表示一個函式只能在當前檔案中被訪問
- static 類成員變數 表示這個成員為全類所共有
- static 類成員函式 表示這個函式為全類所共有,而且只能訪問靜態成員變數
const
- const 常量:定義時就初始化,以後不能更改。
- const 形參:func(const int a){};該形參在函式裡不能改變
- const修飾類成員函式:該函式對成員變數只能進行只讀操作
static關鍵字的作用:
(1)函式體內static變數的作用範圍為該函式體,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值;
(2)在模組內的static全域性變數和函式可以被模組內的函式訪問,但不能被模組外其它函式訪問;
(3)在類中的static成員變數屬於整個類所擁有,對類的所有物件只有一份拷貝;
(4)在類中的static成員函式屬於整個類所擁有,這個函式不接收this指標,因而只能訪問類的static成員變數。
const關鍵字的作用:
(1)阻止一個變數被改變
(2)宣告常量指標和指標常量
(3)const修飾形參,表明它是一個輸入引數,在函式內部不能改變其值;
(4)對於類的成員函式,若指定其為const型別,則表明其是一個常函式,不能修改類的成員變數;
(5)對於類的成員函式,有時候必須指定其返回值為const型別,以使得其返回值不為”左值”。
https://www.cnblogs.com/Jinfeng1213/p/8597446.html
static的例子如下:
#include<iostream>
using namespace std;
void f();
int main()
{
for(int i = 1;i <= 3;i++)
{
f();
}
return 0;
}
void f()
{
static int a=1;
cout<<"第"<<a-1<<"次呼叫f函式:a="<<a++<<endl;
}
相關文章
- const、define 和 static 的區別
- let與const區別
- Flutter 知識梳理 (Dart) - Dart 中 static, final, const 區別FlutterDart
- es6 let const與var 的區別
- inline、const、mutable、this、staticinline
- static 和extern的區別
- var、const、let 的區別
- final與static關鍵字的區別?(skycto JEEditor)
- const char*, char const*, char*const 有何區別?
- var和let/const的區別
- var、let和const的區別
- var let const區別
- let const var 區別
- let,const,var區別
- self::class和static::class的區別
- 簡單易懂 —— this、self、static 的區別
- C語言 關鍵字const的作用 const int* 和int *const 的區別C語言
- JavaScript中let、const、var 的區別JavaScript
- PHP new self()和new static()的區別PHP
- JavaScript中的var、let 及 const 區別JavaScript
- var、let、const宣告變數的區別變數
- C程式記憶體的分配,const ,volatile,staticC程式記憶體
- reinterpret_cast 和 static_cast 的區別AST
- ES6中var,let,const的區別
- PHP 定義常量 define 和 const的區別PHP
- PHP 中 bind 的用法 self 和 static 的區別PHP
- final修飾和static final修飾的區別
- iOS常用關鍵字static、const、extern、defineiOS
- 【前端面試】(四)JavaScript var let const的區別前端面試JavaScript
- const關鍵字在C與C++中修飾變數的區別C++變數
- JavaScript 高階—— ES6新增語法 const(let const var區別)JavaScript
- var、let、const變數宣告的區別及特點變數
- JavaScript 中的 Var,Let 和 Const 有什麼區別JavaScript
- ES6中let和var和const的區別
- 【ES6】var、let、const三者的區別
- php中const和define有什麼區別PHP
- php class中public,private,protected,static的區別,以及例項PHP
- Rust中,*const T和*mut T的區別是什麼?Rust