2010年1月19日 星期二

C++ virtual function 的另類呼叫法

今天早上學習了一下 C++ 對於 virtual function 是怎麼做的, 就寫了一個小程式來驗證一下, 果然如預期的, 程式如下:

#include

typedef void (*pfn_t) (void *);

class CObject
{
char *m_pszStr;

virtual void vfunc()
{
m_pszStr = "Slash is the BEST!\n";
cout << m_pszStr;
}
};

main()
{
CObject a;
pfn_t **p;

p = (pfn_t **) & a;
(**p) (&a);
}

執行結果:

[slash@slash ~]$ g++ -Wno-deprecated a.cpp
[slash@slash ~]$ ./a.out
Slash is the BEST!
[slash@slash ~]$

沒有留言: