C++ 运算符重载与多态性差异

C++ 运算符重载与多态性差异,c++,polymorphism,operator-overloading,overloading,C++,Polymorphism,Operator Overloading,Overloading,我知道参数重载和多态性是不同的。基本上,多态性允许基于对象类型的不同行为。那么,在某种意义上,操作符重载不是多态性的表现吗 例如,+可以用来添加两个int,我也可以用它来添加两个类成员变量,也是int类型。Yes运算符重载也是多态的 事实上有三种多态性: 重载实现了所谓的ad-hoc多态性 子类型实现包含多态性 泛型实现参数多态性 ad-hoc多态性通常被认为不是很强大,只是很方便。是的,运算符(和函数)重载是实现多态性的一种方法。这真的重要吗?它只是一个词。不@KerrekSB,它不仅仅是

我知道参数重载和多态性是不同的。基本上,多态性允许基于对象类型的不同行为。那么,在某种意义上,操作符重载不是多态性的表现吗


例如,+可以用来添加两个int,我也可以用它来添加两个类成员变量,也是int类型。

Yes运算符重载也是多态的

事实上有三种多态性:

  • 重载实现了所谓的ad-hoc多态性
  • 子类型实现包含多态性
  • 泛型实现参数多态性

ad-hoc多态性通常被认为不是很强大,只是很方便。

是的,运算符(和函数)重载是实现多态性的一种方法。这真的重要吗?它只是一个词。不@KerrekSB,它不仅仅是一个词。在这个词后面有一个概念,多态性是编写代码时要考虑的一件非常重要的事情。@ Jean BaptisteYun·S:Meh。从发展分类法中你只能得到这么多。重要的是您知道如何编写好的代码(可用、可重用、可维护、高效)。您可能需要重载、专门化、继承、模板化或重写,但了解每种方法的适用性比给它们指定任意、重载的名称要重要得多。分类法有助于建立一个共同的词汇表,但在这种情况下,每个人都会想出一些略有不同但听起来相似的东西,我怀疑这是否有用。@Jean BaptisteYunès你只是说“运算符重载”,它比“42型多态性”或其他任何东西更清晰。在我的世界里,“即席多态性”指类型擦除a la
boost::any
。。。但是每个函数都有自己的:-),显然,一位采访者说,应用于同名但参数不同的函数的函数重载并不构成多态性:/meh。你同意吗?不,是多态性。它是一种“语法多态性”,是在编译时解决的静态多态性。根据参数的类型或数量不同而编译的表达式。多态性经常与动态多态性相关联,动态多态性发生在运行时,但多态性只是对某些条件做出不同反应的能力。C++模板是静态求解的,没有人会告诉你它不是多态性(有些人可能说模板是坏的)。例如在java <代码> PRTLNN()/Cuff>中是多态的,即使它实际上是不同函数的集合,作为一个用户,你不介意,它是多态的,它根据参数而不同地表现!它的实现方式与我们的讨论无关!顺便说一句,多态性只是一种幻觉,因为最终只选择了一个函数,所以无论是在编译时还是在运行时都没有区别。