为什么c ++中没有多方法?

时间:2011-01-30 18:28:47

标签: c++ multimethod

我读了很多关于如何在c ++中实现multimethod的文章:

  1. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1529.html
  2. http://www.codeproject.com/KB/recipes/mmcppfcs.aspx
  3. http://lambda-the-ultimate.org/node/2590
  4. http://parasol.tamu.edu/people/peterp/omm/
  5. 为什么c ++中没有多方法?

    为什么它们不受c ++标准的支持?

3 个答案:

答案 0 :(得分:35)

直接从马的嘴里出来:

  

“我遗憾地拒绝了多方法,因为我喜欢这个想法,但找不到一个接受它的可接受的形式。”

Bjarne Stroustrup, C ++的设计与演变(p297)

后来:

  

“多方法是C ++的一个有趣的假设。我当时能够设计和实现它们吗?[...]还有什么其他工作可以用来提供设计时间并实施多种方法?“

(p298f)

一般情况下,每当您想要了解某些特定C ++功能为何被实现,或者未实现,或者以现在的方式实现时,并且如果该功能在标准化之前出现,那么您需要阅读D& ; e。

答案 1 :(得分:15)

正如Bjarne多次指出的那样,当人们批评C ++时,它通常会运行:“C ++太大,太复杂,功能太多,而且难以学习 - 你应该真的工作使它更小更简单。哦,当你正在努力的时候,我也有一个非常好的想法,你应该添加杀手功能!“

答案 2 :(得分:9)

仅仅因为它可以完成并不意味着它是一个没有完成的问题。对C ++的一种批评是“Stroustrup接受了所有人都听过的内容,并试图将其包括在内。”

另外,正如Raymond Chen所说,“每个功能都以-100分开始。”也就是说,在你问为什么C ++没有这些东西之前,你应该详细解释它为什么需要它们。否则,由于与之相关的成本,您的功能将处于负值区域。