对不起,如果名称有点混乱。 我来自Java背景,但是我注意到C ++对多态的处理略有不同
我有下面的代码;
class BaseClass
{
public:
void printOut()
{
std::cout << "this is the Base Class" << endl;
}
};
class DerivedClass :
public BaseClass
{
public:
void printOut()
{
std::cout << "this is the Derived Class" << endl;
}
};
这是我创建的用于测试多态性的两个简单类。
主要功能如下
BaseClass base;
base.printOut();
DerivedClass derived;
derived.printOut();
BaseClass *pBase = &derived;
pBase->printOut();
我从中得到的输出是;
this is the Base Class
this is the Derived Class
this is the Base Class
从Java的背景来看,这对我来说有点奇怪,即使我已经转换了派生类,它仍然应该打印this is the Derived Class
,因为它的内容仍然应该是派生类,但是具有不同的标识
但是,在这种情况下,它没有达到我的预期,它似乎已经过了指针定义,而是打印了this is the Base Class
。
我如何在C ++中达到预期的结果?