關(guān)于C++靜態(tài)成員函數(shù)訪問非靜態(tài)成員變量的問題
class a
{
public:
static FunctionA()
{
menber = 1;
}
private:
int menber;
}
編譯上述代碼,出錯。原因很簡單大家都知道,靜態(tài)成員函數(shù)不能訪問非靜態(tài)成員,這是因為靜態(tài)函數(shù)屬于類而不是屬于整個對象,靜態(tài)函數(shù)中的 member可能都沒有分配內(nèi)存。靜態(tài)成員函數(shù)沒有隱含的this自變量。所以,它就無法訪問自己類的非靜態(tài)成員。
那要想訪問怎么辦呢?地球人都知道只要將:
int menber;
//change the line above to:
static int menber;
但是這個方法讓我們不得不將static function內(nèi)用到的成員變量都變成static的了,而且static的成員還要顯式初始化,有沒有更好的方法?答案是肯定的。代碼說話:
class a
{
public:
static FunctionA(a* _a)
{
_a-> menber = 1;
cout<<_a-> menber<<endl;
_a->f();
}
void f()
{
cout<<"f被調(diào)用了"<<endl;
}
private:
int menber;
};
前提是這個類要分配了內(nèi)存空間。其實這里我做的就是將一個對象指針作為靜態(tài)成員函數(shù)的“this”指針,意在模仿傳遞非靜態(tài)成員函數(shù)里this變量(在非靜態(tài)成員函數(shù)中都有this指針(push在ECX中似乎))
這個想法是我在一個class中要CreateThread的時候產(chǎn)生的,因為Thread 的funtion都是要求static的(是這樣的把?不知道為什么我寫的code,Thread都是static的了。忘了哪兒看到的有這個要求了。有時間找找原因)。
可見C++是非常靈活的。
欄 目:C語言
下一篇:C語言中怎么在main函數(shù)開始前執(zhí)行函數(shù)
本文標題:關(guān)于C++靜態(tài)成員函數(shù)訪問非靜態(tài)成員變量的問題
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/4006.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實現(xiàn)DBSCAN聚類算法
- 01-10全排列算法的非遞歸實現(xiàn)與遞歸實現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解
- 01-10深入C/C++浮點數(shù)在內(nèi)存中的存儲方式詳解
- 01-10深入理解C/C++混合編程


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實現(xiàn)頁面的局部加載


