如何解决不知道,为什么基字符串得到返回而不是派生,是因为向量仅从派生对象复制了基对象?
不知道为什么返回的是基本字符串而不是派生的,是因为向量只从派生对象复制了基对象吗?
#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 举报,一经查实,本站将立刻删除。