深入剖析C++多态的实现与原理-详解

曂沅仴駦  金牌会员 | 2024-6-9 20:50:33 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 867|帖子 867|积分 2601

目录

多态基础

虚函数

在函数前加上virtual就是虚函数
  1. class A{
  2. public:
  3.         virtual void func(){}; //这是一个虚函数
  4. };
复制代码
虚函数的继续

虚函数的继续体现了接口继续
继续了接口等于继续了函数的壳,这个壳有返回值类型,函数名,参数列表,还包括了缺省参数
只需要重写/覆盖接口的实现(函数体)
虚类/虚基类

含有虚函数的类是虚类.
是虚类,且是基类,则是虚基类
重写/覆盖

条件:

三同:函数名,参数(寻常说的参数都是说参数的类型,与缺省参数无关),返回值都要相同
概念:

重写/覆盖是指该函数是虚函数且函数的名字、类型、返回值完全一样的环境下,子类的函数体会替换掉继续下来的父类虚函数的函数体

  • 体现接口继续
  • 重写/覆盖只有虚函数才有,非虚函数的是隐藏/重定义.注意区别
  • 重写/覆盖只对函数体有效,返回值类型,函数名,参数列表,和缺省参数都不能修改
  • 只要子类写上满足三同的虚函数都会触发重写.无论是否修改函数体
多态的条件

多态有两个条件,任何一个不满足都不能执行多态 ,分别是

  • 虚函数的重写
多态的基础
[code]   class Person {   public:       virtual void BuyTicket() {            //是虚函数           std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表