1、首先描述一下指標值的含義:
假設記憶體值的序列是這樣描述的 : 我們定義乙個 0 ~ 50 的正整數序列。
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,0,0,8,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0
它第15號數值是 1,第18號數值是8。
由此,我們可以想象 「序號15」 就是指標,指標的值就是 「序號15位置上描述了乙個變數1」。
為了方便表示:我們定義變數 x 的位置就在 「序號15」上,y序號的位置就在」序號18」上。
所以其值相加:x + y = 1 + 8 = 9;
為了刻意記錄這些序號位置,我們又建立了一張表專門記錄這些序號,它的描述方式假設是這樣的:
」描述這些變數的值」用
」n(x)
」來表式, 「&
」表示向上取這些值的序號位置 )
&n0 ,&n1 ,&n2 ,&n3 ,&n4 ,&n5 ,&n6 ,&n7 ,&n8 ,&n9 ,
&n10,&n11,&n12,&n13,&n14,&n15,&n16,&n17,&n18,&n19,
&n20,&n21,&n22,&n23,&n24,&n25,&n26,&n27,&n28,&n29,
&n30,&n31,&n32,&n33,&n34,&n35,&n36,&n37,&n38,&n39,
&n40,&n41,&n42,&n43,&n44,&n45,&n46,&n47,&n48,&n49
「序號15」位置上描述了乙個變數1,我們可以理解成,記錄 「序號15值」的變數是1,其變數名是」n15」,記錄n15的位置是」&n15」(第15號位址);
因 」&表示獲取序號」 ,那麼它的反作用 」*表示取序號下的值」所以:
*(&n15) = n15 = 1;
擴充套件理解【假設: *n15 = *(&1); (這裡是把n15 的值當做乙個位址來使用,它表示第1號位址的值)】
//例子1 執行基本例項 (動態函式指標的傳遞)
class t_object
virtual ~t_object()
int func(void* p)
};void main()
}
將動態函式指標賦予 _pfunc 作為載體,它需要 t 物件完成例項化執行。
執行方法如下:
step = (t.*_pfunc)(&step);
step = t.func(&step);
這兩個等式表達方式是一樣的。
(關於用途舉例:可以在主類不採用多型的方式承載多套實現的方法,這裡引用敲門磚,希望大家能夠舉一反三)
//例子2 動態函式指標的應用
class t_object
virtual ~t_object()
int func(void* p)
//new coode begin
int func1(void* p)
int func2(void* p)
//new coode end
};void main()
}
以上呼叫僅表示它最基本的原始**展現,方便認知閱讀:
(為了提高閱讀使用性,下面我們開始優化變型操作)
將函式式包含在內,使呼叫方更易理解及呼叫;
//例子3 函式指標作為引數傳遞
class t_object
virtual ~t_object()
int func(void* p)
void addfunc(int(t_object::* pfunc)(void*))
int do(int step)
return step;
} int(t_object::* m_pfunc)(void*);
};void main()
}
根據此方法,可以動態的實施類函式的呼叫。
將函式指標式再簡化,函式指標作為命名型別引數傳遞:
//例子 4 函式指標作為命名型別引數傳遞
class t_object
virtual ~t_object()
int func(void* p)
void addfunc(pfunc pfunc)
int do(int step)
return step;
} pfunc m_pfunc;};
void main()
}
以上是關於類函式傳參的呼叫方式,可以通過該方法實現很多功能,內容太多本次就不一一舉例了。 類函式指標和普通函式指標
我們都看慣了一般的函式指標,但是關於類的函式指標又是怎樣的呢?它的靜態函式指標和非靜態函式指標是一樣的麼?cpp view plain copy font size 18px include using namespace std typedef int pmax int,int 普通函式指標 in...
類成員函式指標
類成員函式指標 類的成員函式分為兩種,一種是靜態函式,另外一種是非靜態函式。例如 class x display 為靜態函式,getvalue即為非靜態函式。兩種函式在使用的時候是不一樣的。靜態函式可以直接由類名來呼叫,而非靜態函式則必須通過某乙個物件來呼叫,例如 x display x x x.g...
類成員函式指標
類成員函式指標的基本用法 1。宣告 已知簡單的類宣告如下 class screen screen public screen forword int num 1 我們可以這樣宣告乙個指向back成員函式的指標 screen screen back fun int para screen back 其...