【发布时间】:2012-02-18 00:12:35
【问题描述】:
我的代码:
#include <iostream>
using namespace std;
class A
{
public:
virtual void print(void) { cout << "I am base class" << endl; }
};
class B : public A
{
public:
void print(void) { cout << "I am class B" << endl; }
};
void mainprint(A *a)
{
(*a).print();
}
int main()
{
A a;
B b;
B *bp;
A *ap;
ap = &b;
a.print();
b.print();
(*ap).print();
bp = new B();
mainprint((A *)bp);
delete bp;
return 0;
}
输出:
I am base class
I am class B
I am class B
I am class B
我已经在函数调用中将指针(bp)转换为类A,但它仍然调用派生类打印!!!
谁能帮我解释一下。
【问题讨论】:
标签: c++ oop casting virtual base-class