2015-05-12 168 views
1

考慮下面的代碼指針到虛擬成員函數

class BASE 
{ 
    public: 
      virtual void test_f(){std::cout<<"BASE::test_f\n";} 
}; 

class DERIVED:public BASE 
{ 
    public: 
      virtual void test_f(){std::cout<<"DERIVED::test_f\n";} 
}; 

void (BASE::*p_base)() = &BASE::test_f; 

p_base是一個指針,指向類的成員函數,但它是多態的。 這意味着,

DERIVED a; 
(a.*p_base)(); 

將打印衍生:: TEST_F

我怎麼能得到的指針的基類的TEST_F使非多態的電話嗎?

+0

你爲什麼要創建一個指向一個多態函數?對我沒有太大的意義。 –

+0

是的,我知道。我只是好奇這些事情是如何運作的。 – zulunation

回答