看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《descent (返無)》之銘言: : 研究 c++ runtime 之後, 我才瞭解 c++ compiler 的邪惡, : 它為了我們的程式碼插了很多額外的 code, 令人又愛又恨。 : 在大部份狀況下, 我們不用管這些事情, 搞懂這些東西對我來說純粹是個機緣。 : 有點中毒, 愈挖愈深。 : 建議先看這篇: C++ 虛函數表解析 : http://blog.csdn.net/haoel/article/details/1948051 : 這篇則是我反組譯後分析 virtual function table : http://descent-incoming.blogspot.tw/2012/09/c-virtual-function-table.html : 有任何錯誤還請各位朋友指證。 感謝原PO的分享,順著這篇我也將我的問題提出來問看看 這是OpenCV中的cap_dshow.cpp一小部份http://tinyurl.com/9lkrfdc class CvCaptureCAM_DShow : public CvCapture { public: CvCaptureCAM_DShow(); virtual ~CvCaptureCAM_DShow(); virtual bool open( int index ); virtual void close(); virtual double getProperty(int); virtual bool setProperty(int, double); virtual bool grabFrame(); virtual IplImage* retrieveFrame(int); virtual int getCaptureDomain(); protected: void init(); int index, width, height,fourcc; IplImage* frame; static videoInput VI; }; ^^^^^^^^^^^^^ //-------------------------------------------------- class videoInput{ public: videoInput(); ~videoInput(); ........其他的函式 }; http://tinyurl.com/8uemmun //-------------------------------------------------- 就PO所提的,這些Virtual Function最後都會做成Virtual Table 要呼叫的時候就到這個表格找函式的位置,然後再跳過去執行 只是現在我想要找出protected變數videoInput VI;的位置 因為我要藉由vi的位置來呼叫videoInput的函式 我原本天真的以為變數也會有類似的表可以查詢 但我google找了好久都只有提到function有表可以查 卻都沒提到變數的部份是怎麼安排的 請問各位網友這樣的問題有解嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.232.143
azureblaze:用函數包? virtual videoInput &getVI(){return VI;} 10/15 17:47
firose:多了vtbl這層是為了要改寫函式位址, 沒改寫需求為什麼要表? 10/15 18:13
littleshan:看不懂你的需求 10/15 19:20
chengcti:變數在 vtable 中一樣是變數, function 才是 pointer. 10/15 21:43