c++动态陷阱

记录以防忘记

class base{
public:
    ........
};

class derive:public base{
public:
    void test();
};

int
main(){
    derive child;
    base *father = &child;
    father->test();//error
}

father->test()会报错。因为对于非virtual函数调用,在编译期就已经确定函数地址了,只要virtual函数调用才会触发动态调用。base类是没有test方法的,所以编译通不过。

posted @ 2013-11-14 14:35  黑暗遊侠  阅读(74)  评论(0编辑  收藏  举报