谭浩强C++程序设计第12章多态性与虚函数

c++实验四:多态性 3、 仿照标准字符串类string ,设计一个自己的字符串类String。 主要完成以下任务: 1)数据成员是字符指针,可自动适应不同的串长度。 2)串复制,既可使用字符串常量进行复制,也可以使用其他的字符串对象进行复制。 3)串赋值。既可赋值为字符串常量,也可以赋值为使用其他的字符串对象。 4)串连接。重载“+”和“+=”。 5)重载下标运算符[]。 6)串比较。重载 “”和“<”。 7)字符串输入和输出。重载“>>”和“<<”。 编程完成各函数的定义,并进行如下测试。 in 阅读详情

 第十二章、多态性与虚函数

 

 

1,在C++中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数;

 

2,多态性分两类:静态多态性和动态多态性。

 

函数重载和运算符重载属于静态多态性;在程序编译时系统就能决定调用的是哪个函数;它是通过函数重载来实现的;

 

 

动态多态性是在程序运行过程中才动态地确定操作所针对的对象;它是通过虚函数来实现的;

 

3,提倡对程序分步调试,所以要写main函数;

 

4,不仅函数名相同,而且函数类型和函数个数都相同,两个同名函数不在同一个类中,而是分别在基类和派生类中,属于同名覆盖;

 

  重载的参数个数和参数类型必须至少有一者不同;

 

 

5,虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用访问基类和派生类的同名函数;

 

6,基类指针,可以调用同一类族中的不同类的虚函数,这就是多态性,对同一消息,不同对象有不同的响应方式;

 

 

7,关于虚函数使用方法:在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体;

 

8,C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都会自动成为虚函数;

 

(通过虚函数,和指向基类对象的指针变量的配合使用)

 

9,只能用virsual声明类的成员函数,使它成为虚函数,而不能将类外的普通函数声明为虚函数;

 

10,使用虚函数,系统要有一定的空间开销,编译系统会为该类构造一个虚函数表,它是一个指针数据;

 

11,如果将基类的析构函数声明为虚函数,由该类所派生的所有派生类的析构函数也都自动成为虚函数,(即使派生类的析构函数与基类的析构函数名字不相同)

 

这样,无论指针指的是同一类族中的哪一个类对象,当对象撤销时,系统会采用动态关联,调用相应的析构函数,对该对象进行清理工作;

 

 

12,构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,谈不上函数与类对象的关联;

 

13,纯虚函数是在声明虚函数时被“初始化”为0的函数;

 

  纯虚函数的作用是在基类中为其派生类保留一个函数的名字,以便派生类根据需要对它进行定义;

 

  如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该函数在派生类中仍然为纯虚函数;

 

14,这种不用来定义对象而只作为一种基本类型用作继承的类,称为抽象类,

 

只要含有纯虚函数的类就称为抽象类;

 

 

虽然抽象类不能定义为对象(或者说抽象类不能实例化),但是可以定义指向抽象类数据的指针变量;

 

 

 

 

 

 

 

 

15,

C++学习心得(3)多态性与虚函数 C++学习心得(3)多态性与虚函数 ——from 谭浩强.C++面向对象程序设计(第一版) 2014/10/13 6.1    多态性的概念     在C++中,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。     面向对象的描述:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。即每个对象可以用自己的方式去响应共同的消息。 阅读详情

相关推荐

谭浩强C++程序设计第11章继承与派生

第11章、继承与派生   1.      一个派生类只从一个基类派生,这称为单继承;   2,派生类把基类的全部成员(不包括构造函数和析构函数)接收过来,没有选择;   3,在声明派生类时,一般还应当自己定义派生类的构造函数和析构函数,因为构造函数和析构函数是不能从基类继承的;   4,即使是公用继承,基类的私有成员也只有基类的成员函数可以引用它,而不能被派生类的成员函数所引用;

C__Monkey的专栏 2278

C++程序设计谭浩强 第十二章(多态性与虚函数)习题答案(部分有改进)

12.1 在例12.1程序基础上作一些修改。定义Point类,由Point类派生出Circle类,再由Circle类派生出Cylinder类。将类的定义部分分别作为3个头文件,对它们的成员函数的声明部分分别作为3个源文件,在主函数中用#include命令把它们包含进来,形成一个完整的程序,并上机运行。 头文件 Point.h #include <iostream> using namespace std; class Point { public: Point(double x=0,.

什么都学不会 7867

《C++程序设计》谭浩强教程详解

C++是一种静态类型、编译式、通用的编程语言,由Bjarne Stroustrup于1980年代初期在贝尔实验室开始研发,作为C语言的增强版而出现。C++支持多范式编程,包括过程化、面向对象和泛型编程。它不仅能够有效地进行底层编程,而且广泛应用于系统软件、游戏开发、实时物理模拟等需要高性能的领域。在C++中,类(class)是一种将数据成员和成员函数组织在一起的复合数据类型。类提供了数据抽象和封装的手段,以实现对象的状态和行为的定义。

weixin_42309599的博客 1230

C++抽象类

那么,这种不用来定义对象而只作为一种基本类型用作继承的类,称为:抽象类(abstract class),由于它常用作基类,通常称为“抽象基类(abstract base class)”。这个animal基类不是一个具体的动物,它不可以定义对象,只有从animal类派生出来的派生类才可以定义对象。如果在抽象类所派生出的新类中对基类的所有纯虚函数进行了定义,那么,这些函数就被赋予了功能,可以被调用。当派生类成为具体类之后,就可以用这种指针指向派生类对象,然后,通过该指针调用虚函数,实现多态性的操作。

LC的专栏 481

谭浩强版C++课后习题答案

提供了由谭浩强编著的《C++程序设计》(清华大学出版社出版)一书中各章的例题程序以及全部习题的参考解答,以方便教师进行教学,也便于读者上机运行这些程序以及在此基础上修改和调试程序。读者运行光盘中Djgpp目录下的djgpp批处理文件即可启动GCC环境。 程序按章设立文件夹(子目录),例如文件夹c12中包含的是第12章全部例题的程序。程序的文件名以c开头,与例题号一一对应,如c5-7.cpp是第5章例5.7的程序。对于教材中同一例题中包含两个或多个程序的,在文件名中加了顺序号,如c10-4-1.cpp是例10.4的第1个程序,c10-4-2.cpp是例10.4的第2个程序。 教材中所有的程序都是符合C++标准规定的,在GCC中能通过,但有的程序在Visual C++ 6.0中通不过。如果在Visual C++ 6.0环境下运行程序,需要对程序作一些修改。例如,如果程序c10-4-1.cpp在Visual C++ 6.0环境下编译,第1行应改为“include ”,并将第2行“using namespace std;”取消即可顺利通过编译,其他类似。我们在教材的例题程序中还提供了能在Visual C++ 6.0环境下运行的程序,在文件名中加了"(VC)"字样,如c10-4-2(VC) 表示它是对程序c10-4-2修改后能用于Visual C++ 6.0环境的程序。

《c++面向对象程序设计》8-12章课后答案

什么是多态性?请举例说明。多态性有什么好处? 不同的对象收到同一消息可产生完全不同的动作,这一现象叫做多态。通俗 地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似 的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口,多种 方法”。 多态性有以下的好处: 提高了处理问题的抽象级别; 降低了程序设计时的复杂性;(程序员只需记住一个接口,而不是好几个。) 8_2 在C++语言中实现了哪几种多态性?请说明通过什么方式实现。 在C++语言中实现了编译时多态性和运行时多态性。 编译时多态性通过函数重载,运算符重载和模板实现。模板实现的多态性又称为参数多态性。 在C++语言中运行时的多态是通过继承和虚函数实现的。 8_4 什么是静态联编?什么是动态联编? 一个源程序需要经过编译、连接,才能成为可执行代码。 上述过程中需要将一个函数调用链接上相应的函数代码,这一过程称为联编。 联编的目的是要建立函数调用与函数体之间的联系,即将一个函数调用连接到一函数的入口 地址。 静态联编:在程序被编译时进行联编;(早联编)特点是程序执行快,但灵活性较小。 动态联编:在程序运行时联编。(晚联编,滞后联编)其特点是灵活性高,程序执行慢。

【c++思维导图与代码示例】07 多态性

【c++思维导图与代码示例】07 多态性思维导图:代码示例: 思维导图: 代码示例: 示例1: 示例2: 示例3:

是小武呀 1087

一文带你弄懂thermal governor IPA

当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。

yxw0609131056的博客 1245

C++程序设计基础实验-实验七 多态性

掌握C++语言运算符重载的方法;掌握使用虚函数的继承实现动态多态性。掌握纯虚函数及抽象类的使用。

TANGYUSHIZHU的博客 487

数理金融学笔记 Chap2 二叉树模型Binomial

2 二叉树模型与期权定价 Binomial Model and Option Pricing 文章目录2 二叉树模型与期权定价 Binomial Model and Option Pricing单期二叉树模型 One-step Binomial Model风险与无风险资产单期二叉树模型与无套利条件无套利定价 No Arbitrage Pricing风险中性定价 Risk Neutral PricingDelta套期保值 Delta Hedging两期二叉树模型 Two-Step Binomial Model

weixin_66831131的博客 2388

STM32H723串口接收全为0 & CAN错误中断问题

STM32H723串口接收全为0 和 叠加的导致CAN错误问题

weixin_38743772的博客 3917

谭浩强《C++程序设计(第3版)》第12章习题4程序验证实验报告

实验题目:第12章习题4程序验证 一、实验目的 上机验证《C++程序设计(第3版)》第12章习题4。 复习C++多态性与虚函数相关知识。 二、实验内容 详见一、实验目的。 三、设计和编码 1. 本实验用到的理论知识 C++多态性与虚函数 2. 编码 程序清单如下 // ex4.cpp // Encoding: UTF-8 /* * 4.定义一个抽象类Shape,由它派上生出3个派生类:Circle(圆形)、 * Rectangle(矩形)、Triangle(三角形), * 用一个函数printA

Shudderwock 的博客 433

遥感图像融合实战:5分钟搞懂全色与多光谱图像如何提升分辨率(附Python代码)

本文通过实战案例,详细解析了如何利用全色锐化技术融合全色与多光谱遥感图像,以提升图像分辨率。文章深入浅出地介绍了核心概念、环境配置、经典GS融合算法的Python代码实现,并对比了不同算法的优劣,最后提供了效果评估方法与实战陷阱分析,帮助读者快速掌握遥感图像融合的关键技术。

weixin_29041195的博客 394

谭浩强《C++程序设计(第3版)》第12章习题5程序验证实验报告

实验题目:第12章习题5程序验证 一、实验目的 上机验证《C++程序设计(第3版)》第12章习题5。 复习C++多态性与虚函数相关知识。 二、实验内容 详见一、实验目的。 三、设计和编码 1. 本实验用到的理论知识 C++多态性与虚函数 2. 编码 程序清单如下 // ex5.cpp // Encoding: UTF-8 /* * 5.定义一个抽象类Shape,由它派上生出5个派生类:Circle(圆形)、 * Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Tri

Shudderwock 的博客 437

吃透Chisel语言.04.Chisel基础(一)——信号类型和常量

开始肯定是介绍Chisel的基础内容了,《Chisel基础》这一部分主要会介绍数字设计中的两个基本组件:组合电路和触发器。这俩基本组件都不复杂,但是组合在一起就可以得到规模很大、功能也很强大的数字电路了。 第一部分我们就简单地看看Chisel中的信号类型和常量,在上一篇文章中也有相关介绍,其中还包括和Verilog之间的对比。......

github-3rr0r的博客 3823

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 393

大学c++复习谭浩强《C++程序设计》第三版

c++复习 ,教材谭浩强《C++程序设计》第三版(以防你们需要这本书的电子版,特意上传到了蓝奏云),这本书好多小错误,而且有些不符合现在的语法,容易编译错误有点烦,但是谭浩强讲的确实很通俗易懂,因为我是自学,虽然已经买了郑莉的书,但是谭浩强的更易懂。下面是我照着抄的代码,作为记录,方便自己复习。 第九章 怎样使用类和对象 友元 #include<iostream> using namespace std; //提前引用声明 class date; class time { publ.

weixin_44717047的博客 5421

无人机视角下基于YOLOv5/v8/v10的车辆检测系统:从算法原理到UI界面实战

随着无人机技术的普及和智慧城市的发展,无人机视角下的车辆检测在交通监控、战场侦察、灾害救援等领域展现出巨大的应用价值。然而,无人机航拍图像存在目标尺度小、视角多变、背景复杂等挑战。本文深入探讨了如何利用YOLOv5、YOLOv8、YOLOv10三个代表性目标检测算法,构建一套完整的无人机车辆检测系统。文章不仅详细解析了各版本YOLO的核心技术演进,还提供了从数据集准备、模型训练、性能评估到基于PyQt5/PySide6的图形界面开发的完整代码实现。通过本文,读者将能够掌握构建无人机实时车辆检测系统的全流程技

YOLO 172

C++程序设计重点总结(谭浩强版)

文章目录第1章 C++初步知识1.流程第3章 程序设计1.优先级2.switchbreak continue第4章 函数1.内置函数2.函数重载3.函数模板4.带默认参数的函数5.动态存储和静态存储6.auto(自动变量、动态存储)7.static(静态局部变量、静态存储)8.register(寄存器变量、在内存)9.extern(外部变量、静态存储、别的文件可引用)10.static(静态外部变...

李润泽的博客 6813

如何在白平衡标定种构建不同类型的白平衡色温坐标系

以各家芯片方案的白平衡色温坐标系为切入点,详细介绍了各家芯片色温坐标系构建的理论依旧;并解析了不同色温坐标系下的物理含义,提提出了多种不同的色温坐标系

大熊 959

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++多态性及虚函数

多态性 一种接口,多种方法 多态性可分为:静态多态性和动态多态性 静态多态性(编译多态性):通过重载实现(包括函数的重载、运算符的重载)。 动态多态性(运行多态性):通过虚函数实现。 虚函数 虚函数真正作用:突破了无法通过基类指针或引用去调用派生类对象中的成员函数的限制,从而实现了动态多态性。 虚函数的使用方式 虚函数的实现原理:虚函数表实现

etherlai的专栏 1269

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【笔记】C++程序设计第四版谭浩强第12章C++的多态性

个人的读书笔记,记录一下~C++程序设计第四版·谭浩强·第12章C++的多态性。

m0_51738277的博客 428

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

谭浩强第三版第12章多态性与虚函数

1、多态性的概念 向不同对象发送同一个信息,不同的对象在接受时会产生不同的行为(方法)。 (消息,即调用函数,也就是执行不同的函数) 函数的重载、运算符的重载都是多态现象 在C++中,多态表现形式之一:具有不同功能的函数可以用同一个函数名,这样就可以实现用一个函数名调用不同内容的函数。 设计一个“基类”(作为接口),声明不同的派生类,在类中定义同名不同功能的函数。 从系统实现的角度,多态性分为两类: 静态多态性。通过函数重载实现(函数重载和运算符重载)。在程序编译时知道调用函数的全部信息,称编译时的多态性

weixin_43325374的博客 383

C++多态性与虚函数(谭浩强12.1-12.4)

例12.1,一个典型的建立点、面、体的静态多态性例子: #include <iostream> using namespace std; class Point { public: Point(float x = 0, float y = 0); void setPoint(float, float); float getX()const{ return x; }//读x坐标,g...

weixin_43544406的博客 508

谭浩强《C++程序设计》学习篇———虚函数

谭浩强《C++程序设计》学习篇———虚函数 一、定义 定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。 语法:virtual 函数返回类型函数名(参数表) { 函数体 }    用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数  虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。 定义为virt

ljh0302的专栏 839

C++面向对象程序设计(第2版)第六章(多态性与虚函数)知识点总结

C++面向对象程序设计

生活总是来来往往 千万别等来日方长 790
上一篇: 谭浩强C++程序设计第11章继承与派生
下一篇: 谭浩强C++程序设计第13章输入输出流
C__Monkey
博客等级 码龄14年 12粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值