前幾天發現一個很有趣的問題

至今仍然找不到解答

歡迎高手們來挑戰

 

class TestA

{

publlic:

    virtual void Foo(int i){printf("TestA::Foo %d\n", i);}
    virtual void Foo(char *s){printf("TestA::Foo %s\n", s);}
};

class TestB : public TestA

{

publlic:

   virtual void Foo(int i){printf("TestB::Foo %d\n", i);}
};

int main()

{

    TestA a;

    TestB b;

    a.Foo(1);

    a.Foo("Call A");

    b.Foo(2);

    b.Foo("Call B");

}

執行以上的程式碼之後,會有何種結果?

A:  可以正常執行,但是compile過程中會有warning出現

B:  complie過程沒有問題,但是執行時會當掉

C:  compile根本不會過,你耍我啊?

 

想知道結果的人請自行測試

我只想知道原因啊!!!

arrow
arrow
    全站熱搜

    seeulin 發表在 痞客邦 留言(3) 人氣()