C++多态简介

来源:互联网 发布:java socket退出连接 编辑:程序博客网 时间:2024/06/06 01:00

一、多态基本认识

多态基本上可以分为两类:

关于静态多态其实我们并不陌生,比如类模板、重载这些都是静态多态,它们在程序编译时便已经确定,它们在运行便已经被确 定该如何运行调用。

2.运行时多态:即动态多态

其实我们经常说的多态一般是指动态多态,动态多态在编译时不确定如何调用执行,一直延迟到运行时才确定该如何调用执行,因此动态多态方法也会被称为延迟方法。

二、动态多态

1.在C++中动态多态是通过虚函数实现的,而虚函数允许子类对成员函数进行重定义,这种重定义父类成员函数的方式被称为重写。这里提到重写,就不得不提重载,重载是在一个类域里,函数名与被重载函数名相同,但参数类型或参数个数不同,因此在预处理阶编译器会生成两个或多个不同函数名的函数,因此与重写显著不同。

2.动态多态的作用:在C++中,封装是为了使代码模块,继承是为了扩充已实现的代码,总之它们都是为了代码复用。而多态是为了实现接口重用,也就是说,无论传过来的是哪个对象,函数都能调用适合自己对象的相应的方法。

3.函数隐藏:

 在派生类中,有一函数名与基类函数名相同,但函数的参数不同,此时,不管函数前是否有virtual关键字进行修饰,基类中的同名函数将被隐藏。