首页 > 编程语言 >c++的多态

c++的多态

时间:2023-11-29 13:33:28浏览次数:32  
标签:调用 函数 area 多态 c++ Shape 基类

在C++中,多态是面向对象编程的一个重要特性,它允许通过基类的指针或引用来调用派生类的成员函数。多态的字面意思是“多种形态”,它允许相同的操作可以作用于不同的对象,而具体执行的操作则取决于对象的类型和特性。

在C++中,多态主要通过虚函数来实现。虚函数是在基类中使用关键字virtual声明的函数,在派生类中可以重新定义基类中定义的虚函数。当我们通过基类指针或引用调用一个虚函数时,会根据具体对象的类型来调用该虚函数的不同实现。这种操作被称为动态链接,或后期绑定。

例如,假设我们有一个基类Shape和两个从Shape派生的类RectangleTriangle,每个类都有一个area()函数来计算形状的面积。如果我们创建一个RectangleTriangle的实例,并用一个Shape类型的指针来引用它,那么当我们通过这个指针调用area()函数时,会调用RectangleTrianglearea()函数,而不是Shapearea()函数。

总的来说,多态提供了一种机制,使得我们可以使用统一的接口来处理不同类型的对象,而具体执行的操作则取决于对象的实际类型。这使得我们的代码更加灵活和可扩展,可以更容易地添加新的类型和操作,而不需要修改已有的代码。

 

标签:调用,函数,area,多态,c++,Shape,基类
From: https://www.cnblogs.com/whcjob/p/17864638.html

相关文章

  • C++ 图论之次最小生成树
    1.前言生成树指在无向图中找一棵包含图中的所有节点的树,此树是含有图中所有顶点的无环连通子图。对所有生成树边上的权重求和,权重和最小的树为最小生成树,次小的为次最小生成树。最小生成树和次最小生成树的应用领域都较广泛。也是图论中优为重要的研究对象,求解算法也是常规必须......
  • C/C++ 常用的四种查找算法
    在计算机科学中,搜索算法是一种用于在数据集合中查找特定元素的算法。C语言作为一种强大的编程语言,提供了多种搜索算法的实现方式。本文将介绍C语言中的四种常见搜索算法其中包括(线性查找,二分法查找,树结构查找,分块查找),并提供每种算法的简单实现示例。常见的查找算法主要有以下几种......
  • C++容器中存放的是数据本身还是数据地址?
    在C++中,std::map容器内存放的是数据本身(即键值对的值部分),而不是数据地址。当我们插入一个键值对时,std::map会自动复制值并存储副本voidtest02(){ multimap<int,Worker>m; Workerw; w.name="sd"; w.salary=1234; m.insert(pair<int,Worker>(1,w)); multimap<i......
  • c++ deque容器
    一、deque介绍deque(双端队列)是一种索引容器,它包含在#include<deque>头文件中。它与普通的queue队列不同的是,deque可以实现在尾部插入和删除元素。随机的访问双端队列中的元素,时间复杂度为O(1)在首部或者尾部插入或删除元素,时间复杂度O(1)插入和删除元素,是线性的,时间复杂度为O......
  • C++中的红黑树学习
    C++中有一种数据结构-红黑树,在C++的STL中有一种数据结构map,它就是基于红黑树来实现的红黑树,是一种二叉搜索树,但是它的每个节点都有颜色,并且只有红和黑两种颜色。所以每个节点上都有一个存储位来表示节点的颜色,可以是Red和Black.红黑树有一个很大的特点: 它能够确保没有任何一......
  • C++ Primer 学习笔记——第十三章
    第十三章拷贝控制前言类是如何控制类型对象的拷贝、赋值、移动和销毁的?类通过一些特殊的成员函数控制,包括:拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符以及析构函数。当定义一个类时,我们显式地或隐式的指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一......
  • C++17 更通用的 union:variant
    References现代C++学习——实现多类型存储std::variant如何优雅的使用std::variant与std::optionalstd::variant是C++17中,一個新加入標準函式庫的template容器;他的概念基本上是和union(參考)一樣,是一個可以用來儲存多種型別資料的容器。比如說:std::variant<int,d......
  • C++U4-第06课-二分答案
    上节课作业解析链接:https://pan.baidu.com/s/1QCDg1GXb5HhrpkPgomOCyg?pwd=s4b4提取码:s4b4二分答案学习目标二分查找单调性意思 二分答案单调性 二分答案的思路[【二分答案】砍树(简单版)]枚举每一棵树,注意当锯片高度高于树的高度时砍的树木是0。#include<io......
  • C++ bool 类型
    @TOC一.bool类型在C++中,bool类型用于表示逻辑值,它只有两个可能的取值:true(真)和false(假)。bool类型常用于条件判断和布尔运算中。C++标准要求bool类型占用一个字节的内存空间。它的取值只能是true或false,并且可以通过关键词true和false直接赋值。下面是一些常见的使......
  • C++获取机器启动至今的时长和机器启动的时间戳
    根据当前时间戳与机器启动至今的时间长度相减,可以精确计算出机器启动时刻的时间戳epochtime代码#include<iostream>#include<stdio.h>#include<time.h>#include<chrono>intmain(){#ifdef__linux //linuxonly std::cout<<"===linuxonlytimeanalysis==......