当前位置: 首页 > news >正文

C++ 多态(一)

 一、多态定义

同一种操作作用于不同的对象时,可以产生不同的行为。在面向对象编程中,多态性是指通过继承和重写实现的,同一个方法在不同的子类中可以表现出不同的行为。多态性可以提高代码的灵活性和可扩展性,使得程序更易于维护和升级。

二、多态的本质

vftable表记录虚函数指针,当父类的指针或引用,指向子类对象就发生多态。

所以,多态需要满足两个条件:

1、有继承关系

2、子类重写父类的虚函数

三、代码示例

#include <iostream>
#include <string>
using namespace std;class Person{public:Person(){};virtual void showInfo(){cout<<"我是一个人..."<<endl;}
};
class Student:public Person{public:Student():Person(){}void showInfo()override//函数的重写,重写父类的虚函数,防止基类函数写错{cout<<"我是一个学生..."<<endl;}
};
void show(Person &p)
{p.showInfo();
}
void showPoint(Person *p)
{p->showInfo();
}
int main()
{Student stu{};//多态必须满足父类调用子类对象这一条件show(stu);showPoint(&stu);Person p{};show(p);showPoint(&p);return 0;
}

 运行结果:

我是一个学生...
我是一个学生...
我是一个人...
我是一个人...
http://www.lryc.cn/news/341448.html

相关文章:

  • [Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解
  • java-函数式编程-函数对象
  • 致远oa实时获取第三方自定义组件实现
  • 【Linux-点灯烧录-SD卡/USB烧写】
  • PostgreSQL自带的命令行工具06- pg_isready
  • 【请投票】嘉立创EDA中LED发光二极管是否应有统一的引脚定义?
  • LT6911UXB HDMI2.0 至四端口 MIPI DSI/CSI,带音频 龙迅方案
  • 网络培训议题@2
  • linux文本三剑客之sed
  • nginx封禁恶意IP
  • 「PHP系列」PHP MySQL 简介及运用
  • 深度学习论文: XFeat: Accelerated Features for Lightweight Image Matching
  • C++之Eigen库基本使用
  • 2024年 Java 面试八股文——SpringBoot篇
  • C/C++的指针、万能指针、常量指针和指针常量
  • 【讲解下如何解决一些常见的 Composer 错误】
  • qq空间:图片批量下载js脚本工具,javascript批量下载图片
  • 滑动验证码登陆测试编程示例
  • 爬取89ip代理、 爬取豆瓣电影
  • XBoot:基于Spring Boot 2.x的一站式前后端分离快速开发平台
  • 24年最新抖音、视频号0成本挂机,单号每天收益上百,可无限挂
  • Day31:单元测试、项目监控、项目部署、项目总结、常见面试题
  • Flutter笔记:使用Flutter私有类涉及的授权协议问题
  • 面试过程种遇到的面试题收集
  • Vue学习:21.mixins混入
  • 上传文件到 linux
  • NEO 学习之session7
  • 毕业设计uniapp+vue有机农产品商城系统 销售统计图 微信小程序
  • php使用Canal监听msyql
  • metabase部署与实践