靜態的成員函式,同靜態資料成員類似,它也是屬於類,而不是屬於某乙個物件的。
靜態成員函式不能訪問非靜態的資料成員,它只能訪問靜態資料成員,也只能呼叫其它的靜態成員函式。
原因是:當前物件的位址(this)是被隱含地傳遞到被呼叫的函式的。但乙個靜態成員函式沒有
this
指標,所以它無法訪問非靜態的成員函式。
由於靜態成員函式是屬於類的,所以,靜態成員函式的呼叫方法為:
類名::靜態成員函式名
();以下關於靜態成員變數
1.初始化
static
成員變數不能安排在類的建構函式中,因為建構函式可能一再被呼叫,而變數的初值卻只應該設定一次。也不要把初始化安排在標頭檔案中,因為它可能會被包含在許多地方。而應該放在
main
函式之中,或全域函式中,或者任何函式之外。
//***********************************==
對於多個的c/c++標頭檔案的包含,一般情況下放在工程的目錄下編譯器就可以正確地找到。 但是對於在不同資料夾下的標頭檔案的包含,當然可以寫完整的路徑,但是這樣有可能會出現將工程拷到別人的機子上執行不了的問題。如果在這個程裡同寫上相對的路徑,那麼不僅在自己的機子上能執行,別人拷了過去也能正確執行。
例如我的乙個工程標頭檔案如下:
c:/f/work/test/testnow/testpage.h
上面的標頭檔案要包含的檔案如下:
c:/f/work/test/testnow/filehelpers/fileinformationlist.h
c:/f/work/test/testnowtray/testtray/share.h
那麼可以在testpage.h上這樣寫:
[cpp]
view plain
copy
#include "./filehelpers/fileinformationlist.h"
#include "../testnowtray/testtray/share.h"
上面#include "./filehelpers/fileinformationlist.h"
的一點表示當前目錄(這些的標記對於接觸過
dos的人來說一定不會陌生吧?)。
#include "../testnowtray/testtray/share.h"
的兩點表示上一級目錄。
其他的照這樣類推。
這樣是不是方便了一點???
靜態成員變數 和 靜態成員函式
資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...
靜態成員變數和靜態成員函式
我們學到的類物件的成員變數一般都是這個物件專屬,不能為其他物件所共有。然而在實際程式設計中我們需要統計物件的數量等問題,所以就必須設定乙個類的物件所共有的變數,就是靜態成員變數。首先通過乙個簡單的例程 說明靜態成員如何使用。includeusing namespace std class a vir...
C 靜態成員變數,靜態成員函式
資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...