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

c++ overwrite

  1. overwrite,派生类屏蔽了其同名的基类函数,返回值类型可以不同 特征:不同范围(基类和派生类)、函数名字相同、参数不同或者参数相同且无virtual关键字

C++中的Overload、Override和Overwrite - VictoKu - 博客园

. Overwrite(改写)

  改写是指派生类的函数屏蔽(或者称之为“隐藏”)了与其同名的基类函数。正是这个C++的隐藏规则使得问题的复杂性陡然增加,这里面分为两种情况讨论:

(1)如果派生类的函数与基类的函数同名,但是参数不同。那么此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。那么此时,基类的函数被隐藏(注意别与覆盖混淆)。

  借鉴一个网上的例子来看Overwrite(改写)的情况:

#include <iostream>
using namespace std;class Base {
public:
void f(float x) { cout << "Base::f(float)" << endl; }
void g(float x) { cout << "Base::g(float)" << endl; }
void h(float x) { cout << "Base::h(float)" << endl; }
};class Derived : public Base {
public:
void f(float x) { cout << "Derived::f(float)" << endl; } // 覆盖
void g(int x) { cout << "Derived::g(int)" << endl; } // 改写
void h(float x) { cout << "Derived::h(float)" << endl; } // 改写
};int main() {
Derived d;
d.f(1.0f); // 调用Derived::f(float)
d.g(1); // 调用Derived::g(int)
d.h(1.0f); // 调用Derived::h(float)
return 0;
}

http://www.dtcms.com/a/211816.html

相关文章:

  • OpenCV 第7课 图像处理之平滑(二)
  • springboot中拦截器配置使用
  • windows和mac安装虚拟机-详细教程
  • 新闻推荐预测系统实战指南
  • html学习
  • 前端流行框架Vue3教程:27. 依赖注入
  • 教师技术知识对人工智能赋能下教学效果的影响:以教学创新为中介的实证研究
  • UART、RS232、RS485基础知识
  • L1-110 这不是字符串题 - java
  • JWT令牌详解及Java中的使用实战
  • PP-OCRv5
  • 渗透测试靶场PortSwiggerLabs-xss(1-10)lab详解
  • Windows 11 [close recent file browsing history]
  • SQL每日一练(7)
  • clickhouse-1-特性及docker化安装
  • Ubuntu 22.04 高效Python依赖管理指南
  • 工作流长任务处置方案
  • SQL 每日一题(6)
  • Nature图形解析与绘制—热图的绘制及深入解析
  • 【Excel VBA 】窗体控件分类
  • C++引用以及和指针的区别
  • 《数据结构》系列笔记|附扫描手写笔记 1.0开篇-数据结构在学什么?
  • 数据结构第2章 (竟成)
  • Java基础 Day20
  • 【爬虫学习】Python数据采集进阶:从请求优化到解析技术实战
  • 二叉树--OJ2
  • 【数据结构】线性表之“双链表(带头循环双向链表)”
  • 这个方法关闭PowerBI账户的安全默认值
  • 【Android】基于SurfaceControlViewHost实现跨进程渲染
  • IEEE链接Overleaf