const與static的區別

遠飛夢發表於2018-10-29

static

  1. static區域性變數 將一個變數宣告為函式的區域性變數,那麼這個區域性變數在函式執行完成之後不會被釋放,而是繼續保留在記憶體中
  2. static 全域性變數 表示一個變數在當前檔案的全域性內可訪問
  3. static 函式 表示一個函式只能在當前檔案中被訪問
  4. static 類成員變數 表示這個成員為全類所共有
  5. static 類成員函式 表示這個函式為全類所共有,而且只能訪問靜態成員變數

const

  1. const 常量:定義時就初始化,以後不能更改。
  2. const 形參:func(const int a){};該形參在函式裡不能改變
  3. 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;
	}

 

相關文章