Skip to content

Custom polymorphism

1、指的是基于if-else的dispatch方式来实现polymorphism,一般这种方式是不推荐的。

2、对于通过custom polymorphism来实现multiple dispatch的方式,有的人是反对的,参见 C++\Pattern\Visitor-pattern 章节,其中对此进行了讨论。

3、在一些特殊的情况下,需要custom polymorphism来实现某些特殊目的,正如在 stackoverflow Type erasure techniques 中说明的:

Side note: the pattern used i.a. by Boost.Any is called the external polymorphism pattern – wmamrak Dec 4

4、本章的目的是除了讨论custom polymorphism的好坏,而是讨论如何实现custom polymorphism。

Custom polymorphism的方式总结

Concept-based-polymorphism

参见 Polymorphic-value-and-concept-based-polymorphism 章节。

Signature-Based-polymorphism

参见 Signature-Based-polymorphism 章节。

Custom static polymorphism

参见 Custom-static-polymorphism 章节。

Custom virtual table

参见 Custom-virtual-table 章节。