ZC C 類函式指標 模擬

2022-08-29 02:15:07 字數 2490 閱讀 6269

zc: c++的類函式指標 不像 delphi的類函式指標,前者 需要規定死 是哪個類的函式的指標,後者就不需要 很靈活。

測試環境:

win7x64

cn_visual_studio_2010_ultimate_x86_***_532347.iso

qt-opensource-windows-x86-msvc2010_opengl-5.3.2.exe

暫時的約定(20170105)(基於現在的水平狀況)

(1)、所有可能成為函式指標的 類成員函式,去掉 編譯器**優化

(2)、所有 類tclassfuncptr的子類 的call()函式 都去掉 編譯器**優化

(3)、所有可能成為函式指標的 類成員函式,都使用 __stdcall 呼叫約定

(4)、所有 類tclassfuncptr的子類 的call()函式 都使用 __stdcall 呼叫約定

1、測試** --> vs2010控制台程式:

1.1、main.cpp

#include #include 

#include

"zz.h

"class

tclassfuncptr

protected

:

void* fpobj; //

zc: 物件指標

void* fpfunc; //

zc: 類函式的 函式位址(統一使用stdcall呼叫約定,函式傳參/呼叫的時候 方便一點)

public

:

void set(void *_pobj, void *_pfunc)

bool

isvalid()

};//

zc: 子類 命名規則:「tcfp_返回值型別_各個傳入引數型別()」

class tcfp__ :public

tclassfuncptr}}

};class tcfp_i_if :public

tclassfuncptr}}

};class tcfp_cr_if :public

tclassfuncptr

;

#pragma optimize( "", off )crtn __stdcall tcfp_cr_if::call(

int _i, int

_j) }}

#pragma optimize( "", on )

//zc: 獲取 類函式指標(位址)

templatedst_type pointer_cast(src_type src)

//#pragma optimize( "gs", off )

void

main()

1.2、zz.h

#ifndef zzz

#define zzz

//#include

//#include

void z01(int _i, int

_j);

void z02(int _i, int

_j);

void z03(int _i, int

_j);

class

crtn

;class

ca

int __stdcall b(int _i, double

_j)

crtn __stdcall returnobj03(

int _i, int

_j)

//zc: 這個函式的實現,寫在了cpp檔案裡面,並且使用了編譯開關 ==> 它的**沒有被優化

crtn __stdcall returnobj01(int _i, int

_j);

//zc: 函式returnobj02(...) 雖然加了編譯開關,但是看彙編release版 裡面仍然是被優化了...

#pragma optimize( "", off )crtn __stdcall returnobj02(

int _i, int

_j)

#pragma optimize( "", on )};

#endif

//zzz

1.3、zz.cpp

#include "

zz.h

"#pragma optimize( "", off )

void z01(int _i, int

_j)}

#pragma optimize( "", on )

void z02(int _i, int

_j)}

void z03(int _i, int

_j)}

#pragma optimize( "", off )crtn __stdcall ca::returnobj01(

int _i, int

_j)#pragma optimize( "", on )

z

類函式指標和普通函式指標

我們都看慣了一般的函式指標,但是關於類的函式指標又是怎樣的呢?它的靜態函式指標和非靜態函式指標是一樣的麼?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 其...