C++ 重载,重定义(覆盖),重写名字隐藏

首先先给出定义吧
重载:同一个类中,函数名相同但是参数不同,不管是否有virtual关键字。
重定义:不同类中(特指基类和子类)函数名相同。但是参数列表和返回值不一定相同。
重写(覆盖):基类函数有virtual关键字,且函数名、参数列表、返回值都相同。属于重定义一种。
名字隐藏:如果对基类的某一成员函数的版本在子类中重定义,那么基类中该函数的版本将被隐藏。

看个小程序。

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;

  4. class Base {
  5. public:
  6.     virtual void mf1()    
  7.     {
  8.         cout << "Base::virtual void mf1()" << endl;
  9.     }
  10.     virtual void mf1(int)        //重载mf1() virtual函数
  11.     {
  12.         cout << "Base::virtual void mf1(int)" << endl;
  13.     }
  14.     int f() const
  15.     {
  16.         cout << "Base::f()\n";
  17.         return 1;
  18.     }
  19.     int f(string) const        //重载f()函数
  20.     {
  21.         cout << "Base::f(string)" << endl;
  22.         return 1;
  23.     }
  24. };

  25. class Derived : public Base {
  26. public:
  27.     using Base::f;        //使用using关键字让f()函数可见
  28.     virtual void mf1()    // 重写基类虚函数
  29.     {
  30.         cout << "Derived::virtual void mf1()" << endl;
  31.     }
  32.     int f(int)    //重定义f()函数, 可以改变其参数列表
  33.     {
  34.         cout << "Derived::f(int) const\n";
  35.     }
  36. };


  37. class Derived2 : public Base {
  38. public:
  39.     void f()    //重定义f()函数, 可以改变其返回值
  40.     {
  41.         cout << "Derived2::f() const\n";
  42.     }
  43. };

  44. int main()
  45. {
  46.     Derived d;
  47.     Derived2 d2;
  48.     int x = 10;
  49.     string str = "hello";
  50.     
  51.     
  52.     d.mf1();        ///调用派生类中的函数
  53. //!    d.mf1(x);        ///派生类重写了基类中的mf1虚函数,则基类中其他版本的函数都被隐藏了
  54.     d.f(x);            ///调用派生类中的函数
  55.     d.f();
  56.     
  57.     d2.f();
  58. //!    d2.f(str);        ///派生类重定义基类中的f函数,则基类中其他版本的函数都被隐藏了
  59. }

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、资源1项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值