首页 > 其他分享 >重载、重写(覆盖)和隐藏

重载、重写(覆盖)和隐藏

时间:2023-02-20 15:34:25浏览次数:25  
标签:函数 int public 基类 重载 父类 重写 隐藏

重载

  • 是指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同,参数类型和数目有所不同
  • 不能出现参数个数和类型均相同,仅仅依靠返回值不同来区分的函数
//父类
class A{
public:
    virtual int fun(int a){}
}
//子类
class B : public A{
public:
    //重写,一般加override可以确保是重写父类的函数
    virtual int fun(int a) override{}
}

重写

  • 指的是在派生类中覆盖基类中的同名函数
  • 重写函数体,要求基类函数必须是虚函数且:
    • 与基类的虚函数有相同的参数个数
    • 与基类的虚函数有相同的参数类型
    • 与基类的虚函数有相同的返回值类型

隐藏

  • 某些情况下,派生类中的函数屏蔽了基类中的同名函数
    • 两个函数参数相同,但是基类函数不是虚函数
    • 和重写的区别在于基类函数是否是虚函数
//父类
class A{
public:
    void fun(int a){
		cout << "A中的fun函数" << endl;
	}
};
//子类
class B : public A{
public:
    //隐藏父类的fun函数
    void fun(int a){
		cout << "B中的fun函数" << endl;
	}
};
int main(){
    B b;
    b.fun(2); //调用的是B中的fun函数
    b.A::fun(2); //调用A中fun函数
    return 0;
}
  • 两个函数参数不同,无论基类函数是不是虚函数,都会被隐藏。
//父类
class A{
public:
    virtual void fun(int a){
		cout << "A中的fun函数" << endl;
	}
};
//子类
class B : public A{
public:
    //隐藏父类的fun函数
   virtual void fun(char* a){
	   cout << "A中的fun函数" << endl;
   }
};
int main(){
    B b;
    b.fun(2); //报错,调用的是B中的fun函数,参数类型不对
    b.A::fun(2); //调用A中fun函数
    return 0;
}

标签:函数,int,public,基类,重载,父类,重写,隐藏
From: https://www.cnblogs.com/xiaoqing-ing/p/17137635.html

相关文章

  • 性能提升 40 倍!我们用 Rust 重写了自己的项目
    前言Rust已经悄然成为了最受欢迎的编程语言之一。作为一门新兴底层系统语言,Rust拥有着内存安全性机制、接近于C/C++语言的性能优势、出色的开发者社区和体验出色的文......
  • 项目一众筹网03_4_管理员维护_更新_增删查改全部完结_隐藏域的使用
    系列文章目录文章目录​​系列文章目录​​​​14-管理员维护-更新-目标和思路​​​​15-管理员维护-更新-前往更新的表单页面​​​​隐藏域的使用​​​​16-管理员维护-......
  • odoo 通过Javascript显示或隐藏form自带按钮
    实践环境Odoo14.0-20221212(CommunityEdition)需求描述如下,根据条件对form视图自带按钮的显示、隐藏进行控制代码实现隐藏、显示编辑和创建按钮为例odoo14/custo......
  • jQuery-案例-广告显示和隐藏、案例-抽奖
    jQuery-案例-广告显示01-广告的自动显示与隐藏.html页面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JQuery案例-广告的自动显示......
  • Java基础知识点(带返回值方法的定义和调用
    一:带返回值方法的定义方法的返回值其实就是方法运行的最终结果。如果要在调用处根据方法的结果,去编写另外一段逻辑,为了在调用处拿到方法的结果,就需要定义带返回值的方法。eg......
  • 重载和重写的区别有哪些?
    重载和重写的区别有以下几点:一、定义上的区别:1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。2、覆......
  • 重温Java重写与重载
    方法重写参数列表必须完全与被重写方法的相同;返回类型必须完全与被重写方法的返回类型相同;访问权限不能比父类中被重写的方法的访问权限更低。例......
  • apche重定向&端口转发&隐藏index.php.htaccess
    Options+FollowSymLinksIndexIgnore*/*RewriteEngineon#ifadirectoryorafileexists,useitdirectlyRewriteCond%{REQUEST_FILENAME}!-fRewriteCond%{REQUEST......
  • 默认参数、占位参数、函数重载
    (一)默认参数C++函数中的形参列表中的形参是可以有默认值的语法:返回值类型函数名(参数=默认值){}注意事项:如果我们自己传入数据,就用自己的数据,如果没有,就用默认值如果......
  • 隐藏响应中的server和X-Powered-By
    有时候,我们用调试工具查看别人的网站时,经常看到X-Powered-By:PHP/7.1.8这样的一行和Server:Apache/2.4.27(Win32)OpenSSL/1.0.2lPHP/7.1.8这样的一行在大多数情况下,......