还有这样的虚函数面试题
两个类A和B,没有继承关系!!! 没有继承关系!!!
class A {
public:
void f1() {
printf("A::f1\n");
}
virtual void f2() {
printf("A::f2\n");
}
static void f3() { printf("A::f3\n"); }
virtual void f4() { printf("A::f4\n"); }
};
class B {
public:
virtual void f1() {
printf("B::f1\n");
}
virtual void f2() {
printf("B::f2\n");
}
static void f3() { printf("B::f3\n"); }
virtual void f4() { printf("B::f4\n"); }
};
public:
void f1() {
printf("A::f1\n");
}
virtual void f2() {
printf("A::f2\n");
}
static void f3() { printf("A::f3\n"); }
virtual void f4() { printf("A::f4\n"); }
};
class B {
public:
virtual void f1() {
printf("B::f1\n");
}
virtual void f2() {
printf("B::f2\n");
}
static void f3() { printf("B::f3\n"); }
virtual void f4() { printf("B::f4\n"); }
};
问以下输出什么?
int main()
{
B object;
A *p = (A *)&object;
p->f1();
p->f2();
return 0;
}
{
B object;
A *p = (A *)&object;
p->f1();
p->f2();
return 0;
}
结果:
A::f1
B::f1
请大神来分析一下!~