C++面向对象学习(多态)

news/2024/10/11 3:11:03/

C++多态

多态,看字面意思都能理解吧,就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。

在我们使用继承的时候,我们调用父类的函数就会将父类的数据一并继承下来(解释的不是很准确)比如说:我现在定义了动物类和狗,我在动物类中定义了walk();这个方法输出“跳起来”。我如果在子类中调用这个方法的时候他输出的还是“跳起来”。这时候如果我们向让他变成“跑起来”,我们就要用到多态。如果要使用多态,我们就要用到我们的虚函数,上代码然后讲解!!!

#include<iostream>using namespace std;class Animal{
public:virtual void walk();//虚函数用于实现多态};void Animal :: walk(){cout<< "默认实现"<<endl;
}class dog:public Animal{
public:void walk() override;//子类重写虚函数};void dog :: walk(){cout<< "dog"<<endl;
}class cat : public Animal{
public:void walk() override;//子类重写虚函数
};
void cat :: walk(){cout<< "cat"<<endl;
}void letitwalk(Animal &an){an.walk();
}void demo(){dog d;cat c;letitwalk(d);letitwalk(c);
}int main(){demo();return 0;
}

我们在父类定义方法的时候加上 virtual 可以将我们的父类的函数设置为虚函数,然后在使用override在子类中重写父类的方法。运行结果:

我们使用含有虚函数类型的对象,在每个对象初始化的时候,就会附带一个虚函数列表(虚函数表),这个表指向实际类型的虚函数


http://www.ppmy.cn/news/1517958.html

相关文章

【React】useEffect的使用场景与作用

useEffect 是 React 中的一个 Hook&#xff0c;用于在函数组件中执行副作用。副作用是指那些与渲染过程无关的操作&#xff0c;比如数据获取、订阅事件、手动操作 DOM、日志记录等。useEffect 允许你在函数组件中引入这些副作用&#xff0c;而不必依赖于类组件的生命周期方法&a…

C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图

C++和OpenGL实现3D游戏编程【连载6】——不规则图形的纹理贴图 1、本节实现的内容 上一节我们讨论了纹理贴图的相关基础操作,但上一节的纹理贴图操作基本上都是规则图形,包括圆形和球形虽然复杂一点,但是它也是规则的。这一节课我们要讨论一下,怎么在不规则图形上纹理贴图…

‌使用网站地图:‌优化网站结构,‌提升搜索引擎抓取效率

在网站优化策略中&#xff0c;‌使用网站地图是一项至关重要的措施。‌网站地图&#xff0c;‌特别是XML格式的网站地图&#xff0c;‌为搜索引擎提供了一个详细的网站结构蓝图&#xff0c;‌有助于蜘蛛更快地了解网站内容&#xff0c;‌发现新的或更新过的页面。‌以下是关于如…

基于单片机的人体红外感应报警系统设计

【摘要】 本设计采用单片机作为系统控制核心&#xff0c;以被动式红外人体感应的检测方式&#xff0c;把传感器检测到的信号输入单片机作为外部触发信号&#xff0c;通过软件编程方式控制声&#xff08;蜂鸣器&#xff09;光&#xff08;LED 灯闪烁&#xff09;报警电路的工作状…

HTML基础学习笔记

1.标题排版 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>大国重器</title> </head> …

Java经典框架之MyBatis

一、基本介绍 MyBatis 是一个非常流行的 Java 持久层框架&#xff0c;它提供了简单的方法来处理数据库中的数据。MyBatis 可以看作是 JDBC 的一个薄封装&#xff0c;它简化了 JDBC 代码的编写&#xff0c;同时提供了强大的功能&#xff0c;如动态 SQL、映射自定义对象到数据库记…

数据驱动未来:全球热门大数据平台精选

1. 概述 大数据基础服务平台是一种用于管理、存储、处理和分析大量数据的平台。它提供了一系列的大数据处理和分析工具&#xff0c;包括 Hadoop、Hive、HBase、Spark、Flink、Zookeeper、Kafka 等&#xff0c;使得企业和组织能够更好地理解和利用他们的数据。 2. 核心能力 数…

如何尽早地发现并抵御 DDoS 攻击?

近半年&#xff0c;随着软硬件服务的廉价化、规模化&#xff0c;国内外云厂商频繁遭受不明原因的大规模网络攻击&#xff0c;给很多网站带来了不良的影响。其实&#xff0c;DDoS 攻击这把「达摩斯之剑」一直高悬在各家互联网公司的头顶&#xff0c;虽然很多互联网企业对 DDoS 攻…