靜態函數訪問靜態變數
❶ C++中如何實現外部文件訪問hpp內的(靜態)變數或者(靜態)函數
外部坦猜殲函數不能直接訪問內部變數,要在a文件對象內設置一個介面(公用函數),比如要訪問a中變數f的兆段值讓沖,設函數public int get_f(){return (f);}
❷ 一個類的靜態函數怎麼調用這個類的成員變數,有方法嗎
原因如下;
和靜態數據成員一樣,靜態成員函數是類的一部分,而不是對象的一部分。如果要在類外調用公用的靜態成員函數,要用類名和域運算符「∷」。
如 Box∷volume( ); 實際上也允許通過對象名調用靜態成員函數,如 a.volume( ); 但這並不意味著此函數是屬於對象a的,而只是用a的類型而已。 靜態成員函數的作用是為了能處理靜態數據成員。 可以說,靜態成員函數與非靜態成員函數的根本區別是:非靜態成員函數有this指針,靜態成員函數並不屬於某一對象,它與任何對象都無關,靜態成員函數沒有this指針。
由此決定了靜態成員函數不能訪問本類中的非靜態成員。 在C++程序中,靜態成員函數主要用來訪問靜態數據成員,而不訪問非靜態成員。假如在一個靜態成員函數中有以下語句: cout<<height<<endl; //若height已聲明為static,則引用本類中的靜態成員,合法 cout<<width<<endl; //若width是非靜態數據成員,不合法。但是,並不是絕對不能引用本類中的非靜態成員,只是不能進行默認訪問,因為無法知道應該去找哪個對象。如果一定要引用本類的非靜態成員,應該加對象名和成員運算符「.」。如 cout<<a.width<<endl; //引用本類對象a中的非靜態成員
❸ php請問在static的function中如何訪問變數
靜態方法只能訪問其他的靜態方法或屬性,比如
classA{
privatestatic$url;
($url){
self::$url=$url;
}
(){
returnself::$url;
}
}
//或者在你的靜態方法中獲得實例,當然這樣的悔鎮話可能達不到你預期的效果,推薦你還是使用上面的方法。
classA{
private$url='demo';
publicstaticfunctiongetUrl(){
陪前磨蘆斗$obj=newself();
return$obj->url;
}
}
❹ 靜態成員函數和非靜態函數訪問靜態成員變數的區別
靜態成員函數不能訪問非靜態成員變數,這是規定。
但是你可以換下解決問題的思路。線程的入口函數除了可以鎖靜態成員函數,也可是全局函數。
在全局函數里獲取主窗口的句柄之後,接下來可以訪問各種成員變數。
希望對你有幫助。
❺ C++的類中怎麼用靜態變數
在c++里,遵循靜搏歷態成員函數引用孫銀梁靜態變數的原則,此外對與類的話,如果定義了靜態變數,那麼只能夠在類外賦值,類識不則運分配內存的,static一旦賦值就有了內存。
❻ 函數內的局部靜態變數為什麼在其他函數內無法訪問
除非調用這個函數,否則函數內的什麼變數在其他函數內都無法訪問。你的意思可能是認為「靜態變數是永久性的,所以在其他函數內應該可以訪問」,但事實是函數內的靜態變數也是「局部」變數,所以它只能在聲明它的函數內部可見。
❼ C語言中函數內部聲明的靜態變數的在函數外可以訪問嗎
不可以
只有全局變數才可以
靜態變數,只是裡面的值不會因為函數調用結束而還原
❽ java 靜態函數中的變數定義
局部變數好像不能用靜態修飾茄薯吧……因為局部變數它定義凳嫌的局部使用,不能長期存在,而靜態變數會一直保存在內存中,兩者本質上是沖突的
變數分成局部變數和成員變數,成員變數又分成類變數(用static修飾)和實例變數,靜態方法可以調用所棗納手有的成員變數,普通方法只能調用非靜態變數,也就是實例變數
❾ 為什麼靜態函數只能訪問靜態的數據成員
這個靜態對應的不是動態,沒有對應的詞,普通的就叫「數據成員」和「函數成員」
靜態的意思是跟這個類的對象實例沒關系,是類范圍的,一個類可以生成多個對象,但只有一份靜態數據成員。
普通函數成員會隱式傳遞一個this指針,指向調用這個函數的對象;而靜態函數成員不包括這個指針,所以在靜態成員函數內不能使用非靜態的數據成員和函數。
❿ c++類中靜態成員函數怎麼訪問類私有變數
如果私有變數是靜態的,可以直接訪問,或通過類名::變數名訪問;
如果私有變數是實例成員旁棚,要先創建一個類的對象,滑伍再通過對象名.變數名訪問,或先new一個對運讓則象,將new的返回值賦給一個指針,通過指針名->變數名訪問或通過(*指針名).變數名訪問。