c++支持多态性的几种方式:
1、通过一个隐式转化,从“派生类指针或引用”转化到“其公有基类类型的指针或引用”
Query *pquery = new NameQuery( "Glass" );
2、通过虚拟函数机制
3、通过dynamic_cast 和 typeid 操作符(RTTI)
1)首先这两个操作符是在“运行时刻类型识别”!
2)当一个类库是由第三方库提供商提供时,此时我们不能增加虚拟成员函数。但我们可能仍然希望扩展这个类库(以便增加类库的功能),这种情况下,就必须使用dynamic_cast。
使用dynamic_cast时注意:
如果转化的类型为派生类指针,这样使用:
void Company::payroll( employee *pe )
{
if( programmer *pm = dynamic_cast< programmer * >( pe ))
{
//使用pm
}
else
{
//使用employee的成员函数
}
}
如果转化的类型为派生类引用,这样使用:
#include <typeinfo>
void Company::payroll( employee *pe )
{
try
{
programmer *pm = dynamic_cast< programmer * >( pe );
//使用pm
}
catch( std::bad_cast )
{
//使用employee的成员函数
}
}
使用typeid时:
当typeid的操作数为“类类型”,但不是带有虚拟函数的类类型时,typeid操作符会指出当前操作数的类型:
例如:
class Base{/*没有虚拟函数*/};
class UserBase : public Base {};
UserBase user;
Base *pb = &user;
typeid(*pb).name()的值为Base//如果基类中有虚拟函数,则结果为UserBase
Base &rb = &user;
typeid(rb).name()的值为Base//如果基类中有虚拟函数,则结果为UserBase
当typeid的操作数位“类型指针时”返回的结果是操作数的类型,例如:
typeid(&rb).name()的值为Base *
typeid(pb).name()的值为Base *
分享到:
相关推荐
### C++多态性与虚函数知识点解析 #### 一、多态性的概念 多态性是面向对象编程的一个核心特性,它允许我们通过基类的接口来操作派生类的对象。这种特性使得代码更加灵活且易于扩展。在C++中,多态性主要通过虚函数...
"c++多态性答案" 根据提供的文件信息,我们可以总结出以下知识点: 1. C++支持两种多态性:编译时多态性和运行时多态性。编译时多态性通过函数重载和模板实现,而运行时多态性通过虚函数实现。 2. 虚函数的声明...
关于c++多态性的讲解 对于初学c++者有用。。。
【实验报告——C++中的多态性】 在C++中,多态性是面向对象编程的一个核心特性,它允许我们使用一个基类的指针或引用来调用派生类中重写的方法,从而实现不同类对象的统一处理。本实验报告主要探讨了如何在C++中...
在C++编程语言中,多态性是面向对象编程的核心特性之一,允许不同的对象对同一消息作出不同的响应。本实验报告主要围绕C++中的多态性展开,涉及到构造函数、析构函数、虚函数以及抽象类和纯虚函数的应用。 首先,...
【C++多态性相关习题解析】 C++的多态性是面向对象编程中的一个核心概念,它允许我们使用一个基类类型的指针或引用去调用派生类的对象的成员函数,使得代码更加通用和灵活。多态性主要通过虚函数(virtual ...
C++多态性是面向对象编程的一个核心特性,它允许我们设计更加灵活和可扩展的程序。在C++中,多态性主要通过虚函数和纯虚函数来实现,为对象提供了多种表现形式的能力。本课件将深入探讨这一主题,并提供相关的代码...
【C++多态性相关习题解析】 在C++编程语言中,多态性是面向对象编程的一个核心特性,它允许我们使用一个基类指针或引用去调用派生类的方法,使得代码更加灵活和可扩展。多态性主要通过虚函数(virtual functions)...
**C++多态性和虚函数知识点详解** C++语言提供了两种多态性,分别是编译时多态性和运行时多态性。编译时多态性主要通过函数重载和模板来实现,编译器在编译阶段就能确定调用哪个函数。而运行时多态性则依赖于虚函数...
在C++编程语言中,多态性是面向对象编程的核心特性之一,它允许不同类型的对象对同一消息作出不同的响应。本实验报告详细介绍了如何利用...在实践中不断调试和修正错误有助于提高编程技能,增强对C++多态性机制的理解。
C++多态性的样例程序由于事先对各种人的任务已作了规定,因此,在得到同一个消息时,各种人都知道自己应当怎么做(工作机制事先安排),这就是多态性。可以设想如果不利用多态性那么校长就要分别给学生、家长、教师...
c++课件 多态性与虚函数
### C++中的多态性和虚函数 在C++编程语言中,多态性是一种重要的特性,它允许子类对象可以被当作其父类对象来处理,从而极大地提高了代码的灵活性和可扩展性。多态性的实现主要依赖于虚函数机制。下面我们将详细...
《C++中的多态性分析及其作用》 多态性是C++编程中一个核心的概念,它赋予了程序更高的灵活性和可扩展性。在本文中,我们将深入探讨多态性的定义、类型、实现方式以及运算符重载等相关知识点。 1. 多态性的定义 多...
### 多态性在C++中的应用实例解析 #### 一、多态性的概念与重要性 多态性是面向对象编程(OOP)中的一个核心特性,它允许子类对象可以被当作父类对象来处理,即父类的指针或引用可以指向其任何派生类的对象。通过...
在C++编程语言中,多态性(Polymorphism)是一种关键特性,它允许不同类型的对象对同一种消息做出不同的响应。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。本教程将深入探讨C++中的多态性,特别是...
第9章 多态性与虚函数 本章学习要求: 虚函数 多态性 静态与动态联编 9.1 多态性的概念 9.2 虚函数 9.3 静态绑定与动态绑定 9.4 纯虚函数和抽象类
在C++中,多态性是面向对象编程的重要特性,它允许我们使用基类指针或引用调用派生类的成员函数。以下是对标题和描述中涉及知识点的详细解释: 1. **成员函数调用**: - 当通过对象直接调用成员函数时,会调用该...
【C++中的多态性与实现】 多态性(Polymorphism)是C++编程语言中的核心特性之一,它允许程序使用同一接口处理不同类型的对象,实现“单接口,多实现”的设计理念。多态性主要分为编译时多态性和运行时多态性。 1....
主要简述了c++中的多态性,附上代码,详细简述了c++中的多态性,请好好看!