官术网_书友最值得收藏!

  • Mastering the C++17 STL
  • Arthur O'Dwyer
  • 181字
  • 2021-07-08 10:20:20

Summary

Both classical polymorphism and generic programming deal with the essential problem of parameterizing the behavior of an algorithm: for example, writing a search function that works with any arbitrary matching operation.

Classical polymorphism tackles that problem by specifying an abstract base class with a closed set of virtual member functions, and writing polymorphic functions that accept pointers or references to instances of concrete classes inheriting from that base class.

Generic programming tackles the same problem by specifying a concept with a closed set of requirements, and instantiating function templates with concrete classes modeling that concept.

Classical polymorphism has trouble with higher-level parameterizations (for example, manipulating function objects of any signature) and with relationships between types (for example, manipulating the elements of an arbitrary container). Therefore, the Standard Template Library uses a great deal of template-based generic programming, and hardly any classical polymorphism.

When you use generic programming, it will help if you keep in mind the conceptual requirements of your types, or even write them down explicitly; but as of C++17, the compiler cannot directly help you check those requirements.

主站蜘蛛池模板: 榆树市| 洞口县| 龙南县| 屏东市| 龙陵县| 涞水县| 开封市| 化州市| 长顺县| 融水| 望奎县| 绍兴市| 杭锦后旗| 手游| 锡林浩特市| 清镇市| 隆子县| 彰化县| 莎车县| 静宁县| 宜兰市| 阳西县| 宁化县| 沽源县| 福州市| 西乌珠穆沁旗| 漾濞| 海丰县| 榆树市| 阳原县| 铅山县| 融水| 荣成市| 靖远县| 青神县| 黑龙江省| 军事| 蓝山县| 固阳县| 翁源县| 涪陵区|