ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C++多态性
[打印本页]
作者:
悠扬随风
时间:
2022-8-31 07:44
标题:
C++多态性
C++语言中有一些多义词,例如表示静态的关键字static,将static应用在变量、函数或类成员等不同场合,它所表达的含义不一样。源程序中相同的程序元素可能会具有不同的语法解释,C++语言称这些程序元素具有
多态性
。C++语言有多种不同的多态形式,常见的有
关键字多态
、
重载函数多态
、
运算符多态
、
对象多态
和
参数多态
等。
对具有多态性的程序元素作出最终明确的语法解释,这称为多态的实现。不同多态形式具有不同的实现时间点,编译时实现的多态称为
编译多态
,执行时实现的多态称为
执行多态
。
一、关键字多态和重载多态
1、关键字多态
C++语言中的某些关键字时多义词,具有多态性,例如static、const、void以及public/private/protetced等。关键字多态是由编译器在编译源程序时根据上下文进行语法解释的,是一种编译多态。
2、重载函数多态
编译时,由编译器根据调用语句中实参的个数和类型自动调用形参最匹配的那个重载函数。形态的函数名,调用时可能会调用不同的函数,这就是
重载函数多态
。重载函数多态是由编译器在编译源程序时实现的,也是一种编译多态。所谓
实现重载函数多态
,就是在编译时将调用语句中的函数名转换成对应重载函数的内存存储地址。将源程序中的函数名转换成某个具体的函数存储地址,这种函数名到存储地址的转换被称为是对函数的绑定。
二、运算符多态
相同的运算符,计算机会根据数据类型来选择执行不同的运算,这就是
运算符的多态性
。运算符多态是由编译器在编译时进行语法解释的,是一种编译多态。
通过一个复数的示例来更好的理解运算符多态,下面为复数类的代码:
[code]class Complex{ private: double real,image; //实数的实部和虚部 public: Complex(double x=0,double y=0) {real = x;image = y;} //构造函数 Complex(Complex &c) {real = c.real;image = c.image; } //拷贝构造函数 void Show() { cout
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4