C 除錯追蹤class成員變數的方法

2022-10-04 04:33:13 字數 1180 閱讀 8168

比如:int (*foo)(int arg),記住要和另乙個指標函式區分開來,類似這樣:int *foo(int arg).

比如我們可以這樣宣告乙個變數和函式:

複製** **如下:

int (*pfun)(int arg)=0;

int fun(int arg);    //這個函式實現隨便啦,我就不寫了。

如果我們想利用函式指標操作函式,就和指標變數使用一樣:

複製** **如下:

pfun=fun;

int result=(*pfun)(123);

對,很雞肋也沒必要。這是當然,因為我們沒用在對的地方。下面我要講的是利用乙個類去call back另乙個無關類的成員。

**:複製** **如下:

#include

using namespace std;

template

class functor

virtual n operator()(n arg)

private:

n   (t::*mfun)(n arg);

t *mp;

};class a

int traced(int b)

private:

int a;

};int main()

第33行把class a的成員函式位址傳給了functor的函式指標,從而能夠通過functor的成員處理a中的成員。

這裡用到了對operator()的過載,可以換成別的函式處理functor的函式指標

(不處理也行,但是函式指標很繞人,不直觀),像這樣:

複製** **如下:

#include

using namespace std;

template

class functor

virtual n out(n arg)         //改動

private:

程式設計客棧n   (t::*mfun)(n arg);

t *mp;

};class a

int traced(int b)

private:

int a;

};int main()

c++確實複雜,但是我們如果利用好,複雜就是強大。

本文標題: c++除錯追蹤class成員變數的方法

本文位址:

追蹤class的成員變數

今天我所講的是不通過修改乙個class的成員,就能夠追蹤其成員。方法就是類似c語言中的函式指標,比如 int foo int arg 記住要和另乙個指標函式區分開來,類似這樣 int foo int arg 比如我們可以這樣宣告乙個變數和函式 int pfun int arg 0 int fun i...

class中成員變數的初始化

在類class的定義中,不同定義方式的成員變數的初始化方式各不一樣。對於變數的初始化主要分以下幾種情況 1 普通變數 一般的成員變數的初始化不能在定義是進行初始化的,但此類資料成員是能夠在建構函式中進行初始化的,也能夠在初始化列表中進行初始化。使用建構函式定義方式如下 class test 使用初始...

C 成員變數

變數 成員變數 在乙個函式內部定義的變數,值與函式無關,作用域在類的內部。在每乙個類的物件裡面。本地變數 值與函式有關,作用域在函式內部 同名時 則按照 就近原則 所有函式裡都可以直接使用成員變數,在類的任何函式裡都可以直接用 函式 field 字段,也就是類的成員變數 宣告 只是告訴別人有這麼乙個...