靜態函式與非靜態函式的區別

2021-10-10 04:04:14 字數 300 閱讀 8636

靜態成員函式和非靜態成員函式的根本區別在於有無this指標。

非靜態函式由物件名或者物件指標->呼叫,呼叫時編譯器會向函式傳遞this指標

靜態成員函式則由類名::或者物件名呼叫

非靜態函式中有this指標,靜態函式中沒有this指標,不能訪問物件的成員函式,成員函式有this指標,const修飾this指標,全域性外部函式不能有const,因為沒有this。

對於區域性變數,加靜態關鍵字只是延時壽命,可見範圍沒有變。

對於全域性變數,加靜態關鍵字可見性受到了限制

靜態成員為所有物件共享,不佔物件的空間

靜態函式和非靜態函式的區別(靜態方法和非靜態方法)

首先,靜態函式 只有當程式結束的時候才從記憶體消失,生命週期長。而非靜態則是動態載入到記憶體,不需要的時候就從記憶體消失。而呼叫類中的靜態函式,無需建立物件就可以呼叫了,因為當類初始化的時候,就已經載入了靜態函式,所以靜態函式要比物件載入的早,物件只有被建立的時候才會在堆記憶體中建立空間。另外,靜態...

非靜態函式,非靜態變數與靜態函式,靜態變數

一 函式 函式的引入可以減少程式的目標 實現程式 的共享。但是,函式呼叫也需要一些時間和空間方面的開銷,因為呼叫函式實際上將程式執行流程轉移到被調函式中,被調函式的程式 執行完後,再返回到呼叫的地方。這種呼叫操作要求呼叫前保護現場並記憶執行的位址,返回後恢復現場,並按原來儲存的位址繼續執行。對於較長...

非靜態函式,非靜態變數與靜態函式,靜態變數

非靜態函式,非靜態變數與靜態函式,靜態變數 一 函式 函式的引入可以減少程式的目標 實現程式 的共享。但是,函式呼叫也需要一些時間和空間方面的開銷,因為呼叫函式實際上將程式執行流程轉移到被調函式中,被調函式的程式 執行完後,再返回到呼叫的地方。這種呼叫操作要求呼叫前保護現場並記憶執行的位址,返回後恢...