C++ 中的(非虚)多态
TODO
1 什么是多态
多态 (Polymorphic) 即“多种形态”,这可以理解为:
用一个标识符来表示多个不同的类型,我们称这个标识符为多态变量。
为不同类型的实体提供一个统一的接口,称为多态调用。
多态,是一种基于类型的分发器。
2 多态的(非虚)实现方法
2.1 std::any
struct A {
int a{};
;
string msgvoid outA() const { cout << msg << endl; }
};
struct B {
double t{};
;
string msgvoid outB() const { cout << msg << endl; }
};
static const type_info& AType{typeid(A)};
static const type_info& BType{typeid(B)};
int main()
{
<any> vec;
vector.emplace_back(A{1, "I'm A!"});
vec.emplace_back(B{2.0, "I'm B!"});
vecfor(auto&& i : vec) {
if(i.type() == AType)
<A>(i).outA();
any_castelse if(i.type() == BType)
<B>(i).outB();
any_cast}
return 0;
}