#include <iostream>
#include <vector>
class A {
public:
virtual void print() const = 0;
};
class D : public A {
public:
D(int i):m_value(i){};
virtual void print() const { std::cout << m_value << std::endl;}
private:
int m_value;
};
class B : public A {
public:
B(const std::string& s):m_value(s){};
virtual void print() const { std::cout << m_value << std::endl;}
private:
std::string m_value;
};
int main()
{
std::vector<A*> Arr(4);
Arr[0]=new D(11);
Arr[1]=new D(12);
Arr[2]=new B("str");
Arr[3]=new B("str1");
for(A* item : Arr) {
item->print();
}
}