相关疑难解决方法(0)

将派生类对象存储在基类变量中

我想在向量中存储几个类的实例.由于所有类都继承自相同的基类,因此这是可能的.

想象一下这个程序:

#include <iostream>
#include <vector>
using namespace std;

class Base
{
    public:
    virtual void identify ()
    {
        cout << "BASE" << endl;
    }
};

class Derived: public Base
{
    public:
    virtual void identify ()
    {
        cout << "DERIVED" << endl;
    }
};

int main ()
{
    Derived derived;

    vector<Base> vect;
    vect.push_back(derived);

    vect[0].identify();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望它能打印"DERIVED",因为"识别"方法是虚拟的.相反,'vect [0]'似乎是一个'Base'实例,它打印出来

基础

我想我可以写一个我自己的容器(可能是从vector派生的),不知何故能够做到这一点(也许只能拿指针......).我只是想问一下是否有更多的C++ ish方法来做到这一点.我希望完全兼容矢量(只是为了方便其他用户应该使用我的代码).

c++ polymorphism object-slicing

54
推荐指数
3
解决办法
4万
查看次数

标签 统计

c++ ×1

object-slicing ×1

polymorphism ×1