当前位置: 首页 > 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;
}

相关文章:

  • 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 】窗体控件分类
  • 怎么在自己做网站/网站网络营销
  • 山东网站制作/产品市场推广方案范文
  • 烟台营销型网站建设/软文发布系统
  • 企业文化宣传册模板/盛大游戏优化大师
  • 个人网页设计html加js代码/seo网站推广专员
  • 设计室内效果图设计/seo免费诊断