C++ 如何在向量中存储多个派生类而无需切片

C++ 如何在向量中存储多个派生类而无需切片,c++,c++11,C++,C++11,但我所期望的是 Base func() Base func() 如何将派生类推入基类向量而不进行切片? 如果没有办法解决这个问题,有没有等效的方法将多个派生类存储到一个类似数组的对象中?没有发生切片。您需要在Base中使func虚拟: Derived A func() Derived B func() virtualvoid func() { cout没有发生切片。您需要在Base中使func虚拟: Derived A func() Derived B func() virtualvoid

但我所期望的是

Base func()
Base func()
如何将派生类推入基类向量而不进行切片?
如果没有办法解决这个问题,有没有等效的方法将多个派生类存储到一个类似数组的对象中?

没有发生切片。您需要在
Base
中使
func
虚拟:

Derived A func()
Derived B func()
virtualvoid func()
{

cout没有发生切片。您需要在
Base
中使
func
虚拟:

Derived A func()
Derived B func()
virtualvoid func()
{
无法在基类中将func()设为虚拟

virtual void func()
{
    cout << "Base func()" << endl;
}
类基
{
公众:
虚空函数()
{
无法在基类中将func()设为虚拟

virtual void func()
{
    cout << "Base func()" << endl;
}
类基
{
公众:
虚空函数()
{
cout你应该使用

下面是它的工作原理示例:

虚函数

class Base
{
    public :
        virtual void func()
        {
            cout << "Base func()" << endl;
        }
};
虚拟函数.cpp

#pragma once

class Base {
public:
    virtual void virtual_func();   // virtual function.
    void non_virtual_func();       // non-virtual function.
};

class Derived : public Base {
public:
    void virtual_func();          // virtual function.
    void non_virtual_func();      // non-virtual function.
};
输出应为:

派生::虚拟函数()
Base::非虚拟函数()
派生::虚拟函数()
派生::应该使用的非虚拟函数()

下面是它的工作原理示例:

虚函数

class Base
{
    public :
        virtual void func()
        {
            cout << "Base func()" << endl;
        }
};
虚拟函数.cpp

#pragma once

class Base {
public:
    virtual void virtual_func();   // virtual function.
    void non_virtual_func();       // non-virtual function.
};

class Derived : public Base {
public:
    void virtual_func();          // virtual function.
    void non_virtual_func();      // non-virtual function.
};
输出应为:

派生::虚拟函数()
Base::非虚拟函数()
派生::虚拟函数()
派生::非虚拟函数()