微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不知道,为什么基字符串得到返回而不是派生,是因为向量仅从派生对象复制了基对象?

如何解决不知道,为什么基字符串得到返回而不是派生,是因为向量仅从派生对象复制了基对象?

不知道为什么返回的是基本字符串而不是派生的,是因为向量只从派生对象复制了基对象吗?

#include <vector>
#include <iostream>
using namespace std;
class Base
{
protected:
    int m_value{};
 
public:
    Base(int value)
        : m_value{ value }
    {
    }
 
    virtual const char* getName() const { return "Base"; }
    int getValue() const { return m_value; }
};
 
class Derived: public Base
{
public:
    Derived(int value)
        : Base{ value }
    {
    }
 
    virtual const char* getName() const { return "Derived"; }
};

int main()
{
    std::vector<Base> v{};
    v.push_back(Base{ 5 });
    v.push_back(Derived{ 6 });
 
        
    for (const auto& element : v)
        std::cout << "I am a " << element.getName() << " with value " << element.getValue() << '\n';
 
    return 0;
}

为什么在第二个输出 Base 中是 getName() 方法的返回值?

是不是因为vector不是指针类型或引用?

我是一个价值 5 的基地

我是一个值为 6 的 Base ----> 为什么它会打印 Base?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。