当前位置:首页 » 编程软件 » 编译时多态和运行时多态

编译时多态和运行时多态

发布时间: 2022-01-11 08:44:52

编译时多态性使用什么获得!A重载函数B继承C虚函数D.B和C

函数重载和模板。就这题来说选A。
继承和虚函数对应的多态需要在运行的时候才能确定具体对象,所以不属于编译时多态。

函数重载是让一个函数名对应多个函数,编译器会根据调用时候的特征确定要调用的函数,不需要再运行时处理。
而模板是让一个一个类型模板或者函数模板对应多个类型或者函数,编译器根据对模板实例化是使用的参数生成具体的类和函数,也不是在运行时进行的。
另外注意模板变量不属于多态范畴。

㈡ 编译时的多态性和运行时的多态性在实现方法上有何不同

我不知道你哪本书上看到的,但是,只要不是后绑定就不能称为多态,前绑定只能称为代码重用,比如函数的重载、覆盖以及一般的类继承。
多态的关键特点就是:在运行时虚基类指针指向派生类对象地址,而将派生类对象地址赋值给基类指针,这就是所谓的后绑定,编译时绑定称为前绑定,因此多态另一个特点就是“动态“。换句话说,如果是后绑定,编译器事先是不知道在运行时指针将指向哪一种派生类的对象,因此基类指针必须是“虚“的,虚基类中不能有任何实现只有定义,此时虚基类的作用就是一个类接口,这样才能在编译时“模糊”掉类型匹配原则,基类的作用只是个约定,定义了函数调用格式,而只在运行时才确定指针具体指向哪一个对象。
而所谓编译时的多态性根本不存在,如果编译器能确定基类指针指向哪一个派生类对象地址,就不是多态,哪怕你采用重载覆盖或者继承,这些编译器已经可以预知的事情,一旦编译完成就固定了,运行时无法更改的,比如你不能在不重新编译的情况下增加一个重载,这就制约了程序运行时的灵活性以及可扩充性。而多态完全可以实现“热“更新,更多的是便于程序的可扩充性。你完全可以将派生类编译在DLL中,每当更新程序时,只要替换掉DLL而不用重新编译全部代码。

㈢ 关于java的编译时多态和运行时多态

您想的有点复杂化了,简单的说吧,您说的运行时的多态是分为可执行文件和非可执行文件,也就是说您的程序打没打包,而您说的编译时的多态也分为两种;1、重载。2、继承。前者是静态的多态形式也就是说不可以用于多个类;针对方法,后者是可以在多个类之间使用,要记得只可以子类继承父类,不可‘以下犯上’。就像是java中的类型,一个是private,另一个是public。

㈣ override是属于运行时多态还是编译多态

运行时多态,根据运行时调用参数对象不同,选择不同的方法

㈤ 请问一下Java里编译时多态和运行时多态的区别,最好举个例,谢谢

个人看法
多态的概念 父类引用指向子类对象 而实际调用的方法为子类的方法。
编译时多态 Java里叫重载 严格来说不叫多态 运行时多态 有继承 有重写 父类引用指向子类对象
例子我看就算了 书上多 的是

㈥ 请问 c++中 模板是 编译时多态还是运行时多态,或者都不是,求解

是编译时多态。所有的模板都是在编译时产生对应的代码,它没有面向对象中的虚表,无法实现动态多态。

你仔细想一想,模板在应用时都必须指定确定的类型,而运行多态仅需指定一个基类就OK啦。

㈦ 编译时的多态是指针还是对象

编译时的多态,既不是指针,也不是对象,其实就是一个宏。

如果运行时的多态这样:
class A
{
virtual int f() = 0;
}

class A1 : public A
{
int f() {return 1;}
}

class A2 : public A
{
int f() {return 2;}
}

那么编译时多态相当于这样写:

class A
{
#ifdef _THIS_IS_CLASS_A1_
int f() {return 1;}
#elif defined _THIS_IS_CLASS_A2_
int f() {return 2;}
#endif
};

最后,结论:C++和面向对象根本就是变态!

㈧ C++支持两种类型的多态性:_________、运行时多态

(1)编译时的多态性
编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。
(2)运行时的多态性
运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作。C++中,运行时的多态性通过虚成员实现。

㈨ c++中,可将多态性分为编译时的多态性和()

编译时的多态性:就是在程序编译的时候,也就是生成解决方案的时候就决定要实现什么操作。而运行时的多态性:就是指直到系统运行时,才根据实际情况决定实现何种操作。

㈩ 1. 编译时的多态性与运行时的多态性有什么区别,他们的实现方法有什么不同

多态从实现的角度可以划为两类:编译时多态和运行时多态。

编译时的多态性:就是在程序编译的时候,也就是生成解决方案的时候就决定要实现什么操作。

运行时的多态性:就是指直到系统运行时,才根据实际情况决定实现何种操作。

1、多态实现形式不同:

编译时的多态是通过静态连编来实现的;运行时的多态是用动态连编来实现的。

2、多态性通过方式不同:

编译时的多态性主要是通过函数重载和运算符重载来实现的;运行时的多态性主要是通过虚函数来实现的。

(10)编译时多态和运行时多态扩展阅读:

静态多态性又称编译时的多态性。静态多态性的函数调用速度快、效率高但缺乏灵活性,在程序运行前就应决定执行的函数和方法。

动态多态性的特点是:不在编译时确定调用的是哪个函数,而是在程序运行过程中才动态地确定操作所针对的对象。又称运行时的多态性。动态多态性是通过虚函数(virtual function)实现的。

热点内容
海康威视存储卡质量如何 发布:2024-09-19 08:55:35 浏览:939
python3默认安装路径 发布:2024-09-19 08:50:22 浏览:516
环卫视频拍摄脚本 发布:2024-09-19 08:35:44 浏览:418
sqlserveronlinux 发布:2024-09-19 08:16:54 浏览:256
编程常数 发布:2024-09-19 08:06:36 浏览:952
甘肃高性能边缘计算服务器云空间 发布:2024-09-19 08:06:26 浏览:162
win7家庭版ftp 发布:2024-09-19 07:59:06 浏览:717
数据库的优化都有哪些方法 发布:2024-09-19 07:44:43 浏览:269
知乎华为编译器有用吗 发布:2024-09-19 07:32:20 浏览:618
访问虚拟机磁盘 发布:2024-09-19 07:28:13 浏览:670