Constructor 裡呼叫 virtual function
猜猜看下面這段程式會輸出啥?
#include <stdio.h>
class A
{
public:
A()
{
f();
}
virtual void f(void)
{
printf("A\n");
}
};
class B : public A
{
public:
B() : A()
{
}
void f(void)
{
printf("B\n");
}
};
int main(int argc, char *argv[])
{
B b;
return 0;
}
答案是 A。
我的結論是,constructor 裡呼叫的函式會是自己或 parent 的,即使它被 overwrite,而且被呼叫的函式不能宣告成 pure virtual。
沒有留言:
張貼留言