首页 > 试题广场 >

通用多态是指

[单选题]
通用多态是指
  • 强制多态和包含多态
  • 重载多态和强制多态
  • 参数多态和重载多态
  • 包含多态和参数多态
通用多态又分为参数多态(parametric)和包含多态(Inclusion Polymorphism);特定多态分为过载多态(overloading)和强制多态(coercion)。

    强制多态(coercion):编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作(Casting)。举个例子,比如,int+double,编译系统一般会把int转换为double,然后执行double+double运算,这个int-》double的转换,就实现了强制多态,即可是隐式的,也可显式转换。

    过载多态(overloading):同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。程序设计语言中基本类型的大多数操作符都是过载多态的。通俗的讲法,就是c++中的函数重载。在此处中“overload”译为“过载”,其实就是所谓的“重载”,也许“overload”就应翻译为“过载,重载”吧,那“override”就只能是“覆盖”了。

    包含多态(Inclusion Polymorphism):同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。

    需要注意的地方:包含多态的操作存在着逆单调(Anti-mornotonic)。即一个类型t上的操作,当其定义域缩小成t的一个子类型时,其值域应不小于t.

 参数多态(parametric),采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。(类似模板类吧!)
--------------------- 
作者:飞老虎 
来源:CSDN 
原文:https://blog.csdn.net/zybqmy/article/details/49582521 
版权声明:本文为博主原创文章,转载请附上博文链接!
发表于 2018-11-29 20:44:27 回复(0)
更多回答
重载多态和强制多态是 指特定多态。
参数多态和包含多态是指通用多态。

发表于 2015-09-24 21:58:37 回复(2)


//1.参数多态

//包括函数模板和类模板

//2.包含多态 virtual

class A{
    virtual void foo() {        printf("A virtual void foo()");        }
};
class B : public A {
    void foo() {        printf("B void foo()");        }
};
void test() {
    A *a = new B();
    a->foo(); // B void foo()
}

//3.重载多态

//重载多态是指函数名相同,但函数的参数个数或者类型不同的函数构成多态
void foo(int);
void foo(int, int);

//4.强制多态

//强制类型转换


发表于 2016-01-03 14:04:09 回复(3)
在c++语言中,这种多态性可以通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现。
类型参数化多态和包含多态统称为一般多态性,用来系统地刻画语义上相关的一组类型。
重载多态和强制多态统称为特殊多态性,用来刻画语义上无关联的类型间的关系
发表于 2015-09-05 23:06:58 回复(0)
1.参数多态:指参数方面,包含函数模板与类模板;
2.包含多态:含有virtual关键字
3.重载多态:函数名相同,但函数参数的个数或类型不同构成多态;
4.强制多态:通过强制类型转换形成;
发表于 2017-09-09 09:27:57 回复(2)
用c++这么多年,咋没听说过这么多“多态”呢
发表于 2018-12-07 08:08:15 回复(0)
参数多态:函数模板和类模板;
包含多态:虚函数;
参数多态和包含多态属于通用多态
强制多态:强制类型转换; 
重载多态:函数重载和运算符重载;
强制多态和重载多态属于特定多态!
编辑于 2019-06-04 21:32:16 回复(0)
本身都有大众理解的名称,然后又给这些名称定义了名称,然后又给这些定义的名称分类起了新名称。然后大家开始背吧
发表于 2021-03-25 00:00:18 回复(0)

 多态分为两种:通用的多态和特定的多态。两者的区别是前者对工作的类型不加限制,允许对不同类型的值执行相同的代码;后者只对有限数量的类型有效,而且对不同类型的值可能要执行不同的代码。

    通用多态又分为参数多态(parametric)和包含多态(Inclusion Polymorphism);特定多态分为过载多态(overloading)和强制多态(coercion)。

发表于 2017-03-10 16:20:46 回复(2)
在面向对象的多态性中,通用多态表现为参数多态和包含多态两种多态。
通用多态包含了参数多态包含多态两种多态
参数多态(parametric)
采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。
两个packages的:
·应用内涵一致:提供的都是堆栈抽象操作。
·实现结构相似:采用同类数据结构,实现代码相同。
·元素的类型不同,一些用常量表示的细节不同。[1]  
包含多态(inclusion) [1]  
同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。如Pascal中的子界。
发表于 2015-09-05 15:33:28 回复(0)
学习一波
发表于 2022-05-28 00:42:01 回复(0)
参数多态:函数模板和类模板;包含多态:虚函数;参数多态和包含多态属于通用多态!强制多态:强制类型转换; 重载多态:函数重载和运算符重载;强制多态和重载多态属于特定多态
发表于 2018-08-11 18:28:32 回复(0)

包含多态(Inclusion Polymorphism)是指通过继承和派生实现的多态性。基类可以作为接口,派生类可以根据需要进行扩展或重写基类的函数。通过基类指针或引用指向不同派生类对象,并调用虚函数,可以在运行时实现动态绑定,从而执行适当的函数版本。

参数多态(Parametric Polymorphism)是指使用模板或泛型编程技术,在不同类型的参数上编写通用的代码。通过参数化类型,可以处理多个类型的数据,而无需为每种类型编写特定的代码。

发表于 2023-10-19 16:18:20 回复(0)
参数多态:函数模板和类模板
包含多态,就是virtual 重写   通用多态

重载多态就是重载函数
强制多态就是强制类型转换


发表于 2021-06-08 19:18:11 回复(0)
重载多态和强制多态是 指特定多态。 参数多态和包含多态是指通用多态。
发表于 2020-05-16 20:59:06 回复(0)
多态分为2个静态,和动态的,静态是模板 stl ,提前编译好,通过参数判断不同的类型。重载不是多态。类型转换也不是
发表于 2020-02-07 11:49:30 回复(0)
重载多态和强制多态是 指特定多态。
参数多态和包含多态是指通用多态。
发表于 2018-07-10 10:25:29 回复(0)
重载多态和强制多态是 指特定多态。
参数多态和包含多态是指通用多态。
发表于 2018-05-28 20:18:09 回复(0)
(1)强制多态: 强制多态是编译程序程序的一种。通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
               (2)包含多态:包含多态是一种在一个类中包含另一个类的多态。
               (3)参数多态:采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。
               (4)重载多态:函数或者方法有相同的名称,但是参数列表不相同的情形
          P.S.在这里,我们区分一下多态和重载的区别:
               多态:从自然语言来理解,多态可以认为是同一种物质的不同表现形态。而从编程的角度来理解,接口的不同实现形式可以理解为多态, 允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。
               重载:这里重载要注意和重写的区别。重载翻译为:overload,而重写翻译为override(又成为覆盖)。故我认为重载是一种多态。
发表于 2018-02-24 22:35:46 回复(0)
重载多态和强制多态是 指特定多态。 参数多态和包含多态是指通用多态。
发表于 2017-01-24 12:17:59 回复(0)