C ++:按值还是按引用调用函数? (多态性)

时间:2018-09-25 20:32:24

标签: c++ oop c++11 polymorphism

对不起,如果名称有点混乱。 我来自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 ++中达到预期的结果?

0 个答案:

没有答案