真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

我的一點(diǎn)關(guān)于把WndProc指向類的成員函數(shù)的看法-創(chuàng)新互聯(lián)

轉(zhuǎn)載請注明來源:http://www.cnblogs.com/xuesongshu/我的一點(diǎn)關(guān)于把WndProc指向
類的成員函數(shù)的看法

我以前經(jīng)??紤]使用WNDCLASS、CreateThread之類的Windows API時(shí)如何在類里面調(diào)用,傳入函數(shù)參數(shù)地址時(shí)如何使用成員函數(shù)的地址。為了研究,寫了一個(gè)示例代碼:

成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為婁星等服務(wù)建站,婁星等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為婁星企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。#include #include using namespace std; typedef int (__stdcall *XSSH_SAY_HELLO)(int); class XTestMethod { typedef int (__stdcall XTestMethod::*XSayHello)(int); public: XSayHello say; int hi; public: XTestMethod(); virtual ~XTestMethod(); int sayhello(int arg); }; XTestMethod::XTestMethod() { say=&XTestMethod::sayhello; hi=1000; } XTestMethod::~XTestMethod() { } int XTestMethod::sayhello(int arg) { printf(" say:%d%d ",arg,this->hi); } int main(int argc, char *argv[]) { XTestMethod t; XSSH_SAY_HELLO call=*(XSSH_SAY_HELLO*)&t.say; call(0); system("pause"); return 0; }

調(diào)試的時(shí)候發(fā)現(xiàn)在調(diào)用類的成員之前堆棧里的this指針是空的,輸入之后輸出結(jié)果的值前者是隨機(jī)的,后者直接訪問出錯(cuò)(空引用)。

對于成員函數(shù)與成員變量而言,同一類型的不同對象的同一成員變量的偏移地址是相同的,訪問成員變量時(shí)它們的地址是基于對象的地址疊加計(jì)算的,如果用上述方法進(jìn)入成員函數(shù)進(jìn)而方問成員變量,那么訪問出錯(cuò)。就算在訪問成員變量之前把對象指針壓入堆棧,不僅要考慮壓入哪個(gè)對象的地址,而且這樣使用成員函數(shù)實(shí)際上把它當(dāng)成了全局函數(shù)來用,與靜態(tài)成員函數(shù)使用在使用目的上沒有區(qū)別,失去了面象對象的意義。


分享題目:我的一點(diǎn)關(guān)于把WndProc指向類的成員函數(shù)的看法-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/cdipic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部