原文:靜態成員函數和非靜態成員函數的區別?

一個靜態成員函數不與任何對象相聯系,故不能對非靜態成員進行默認訪問。 它們的根本區別在於靜態成員函數沒有this指針,而非靜態成員函數有一個指向當前對象的指針this。 例如: 函數nsfn 可被認為它聲明為void Sc::nsfn Sc this , int a 。對nsfn 的調用,編譯像注解的那樣進行轉換,s的地址作為第一個傳遞的參數。 你並不實際寫該調用,由編譯來實現。 在函數內部,Sc ...

2013-08-12 10:58 0 11213 推薦指數:

查看詳情

靜態成員函數

就是再成員函數 定義前加一個 static 我們需要了解它的訪問方式以及訪問權限,以及一些特點 有個博主總結的好 傳送門;https://blog.csdn.net/qq_25800311/article/details/85146173 一、靜態成員的特點: (1)static數據成員 ...

Wed Sep 25 22:17:00 CST 2019 0 631
靜態成員函數和普通成員函數區別

成員函數:無論靜態函數還是非靜態函數,都是屬於類的(這一點與數據成員靜態靜態不同),對象並不擁有函數的拷貝.兩者的區別在於:靜態函數由類對象(加.或指針加->;)調用,這時將向函數傳遞this指針.而靜態函數由類名(::)(或對象名.)調用,但靜態函數不傳遞this指針,不識 ...

Sun Sep 02 09:49:00 CST 2012 0 3151
靜態成員變量與靜態成員函數

一、靜態成員變量 類的靜態成員變量是直接與類聯系,屬於類的成員而不是對象,供所有對象共享,存放於全局區,因而不計入類的內存計算。 靜態成員變量可以通過類直接訪問。 (1)靜態成員變量的初始化 靜態成員不屬於類的任何對象,所以並不是對象建立時被定義的,所以它不能由類的構造函數初始化,一般 ...

Thu Jun 29 23:54:00 CST 2017 0 11443
靜態成員函數和常成員函數

靜態成員:不管這個類創建了多少個對象,靜態成員在內存中只保留一份,靜態成員用來解決同一個類中不同對象之間數據成員函數的共享問題。 1、靜態成員函數是用關鍵詞static聲明的成員函數,它屬於整個類而並不屬於類的某個對象。 類的靜態成員(變量和方法)屬於類本身,在類加載的時候就會分配內存 ...

Thu Mar 29 02:21:00 CST 2018 0 2227
為什么靜態成員函數不能是const(轉)

static在c++中的第五種含義:用static修飾不訪問靜態數據成員的類成員函數。這意味着一個靜態成員函數只能訪問它的參數、類的靜態數據成員和全局變量。 不能用const的原因: 這是C++的規則,const修飾符用於表示函數不能修改成員變量的值,該函數 ...

Tue Oct 25 07:11:00 CST 2016 0 1546
C++靜態成員函數不能調用靜態成員變量

其實我們從直觀上可以很好的理解靜態成員函數不能調用靜態成員變量這句話因為無論是靜態成員函數還是靜態成員變量,它們 都是在類的范疇之類的,及在類的整個生存周期里始終只能存在一份。然而非靜態成員變量和靜態成員函數是針對類的對象而言。 然而從本質上來說類的靜態成員函數函數形參中沒有默認 ...

Tue Jul 28 02:00:00 CST 2015 0 2453
關於C++靜態成員函數訪問靜態成員變量的問題

靜態成員函數不能訪問靜態成員,這是因為靜態函數屬於類而不是屬於整個對象,靜態函數中的 member可能都沒有分配內存。靜態成員函數沒有隱含的this自變量。所以,它就無法訪問自己類的靜態成員 代碼如下: class ...

Sat Sep 03 09:33:00 CST 2016 0 3302
C++靜態成員函數訪問靜態成員的幾種方法

大家都知道C++中類的成員函數默認都提供了this指針,在靜態成員函數中當你調用函數的時候,編譯器都會“自動”幫你把這個this指針加到函數形參里去。當然在C++靈活性下面,類還具備了靜態成員靜態函數,即 此時你的test函數只能去訪問m_staticA成員,而不能去訪問m_a ...

Wed Jan 21 19:23:00 CST 2015 4 39596
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM