类的重载重写重定义详解

原创 2018年04月17日 13:03:31
1重载(overload):同类中的同名函数不同参数表,不能单依靠函数返回值判断
2重写(override)【子类覆盖父类方法】:子类父类中,同名同参同返回值且基类为虚函数。
3重定义(redefine)【子类隐藏父类方法】:子类父类中,同名不同参数表的函数或者同名相同参数表的非基类虚函数。
#include<iostream>
using namespace std;
class base {
public:
    void fun1() { cout << "fun1()基类重载" << endl; };//基类重载
    void fun1(int x) { cout << "fun1(int x)基类重载" << endl; };//基类重载
    void fun2() { cout << "fun2()基类重载" << endl; };//同上
    void fun2(int x) { cout << "fun2(int x)基类重载" << endl; };//同上
    virtual void  fun3() { cout << "fun3()基类" << endl; };//准备重写

};
class derived :public base {
public:
    void fun1() { cout << "fun1派生类重定义" << endl; }//子类对父类fun1()重定义
    void fun3() { cout << "fun3()派生类重写" << endl; }//子类对父类fun3()重写。由于父类已经申明为虚函数,所以子类可以不加virtual关键字。
};

int main() {
    base *p=NULL;
    p->fun1();//基类重载
    p->fun1(1);//基类重载
    derived a;
    a.fun1();//派生类重定义,隐藏父类方法。
    a.base::fun1(1);//重定义后想要调用基类函数需要加上::
    a.fun2();//默认子类继承父类;
    p =& a;
    p->fun3();//重写,父类调用子类方法
    return 0;
}

这里写图片描述

C++重载重写重定义的区别及多态的概念

1.重载和重写的区别: 重载overload:在同一个类中,函数名相同,参数列表不同,编译器会根据这些函数的不同参数列表,将同名的函数名称做修饰,从而生成一些不同名称的预处理函数,未体现多态。  ...
  • u012043391
  • u012043391
  • 2017-04-08 16:22:06
  • 696

彻底搞清C++中的重载、重定义、重写

1、重载首先说重载,它最简单,C++中的重载和java中的差不多,都是在一个类中,方法名相同而参数不同的几个方法,但是不能靠返回类型来判断。例如:class AA { public: void...
  • qq_28702545
  • qq_28702545
  • 2016-10-16 17:10:52
  • 1533

重写、重载和重定义的区别

简单分析了重写(override),重载,重定义的区别。
  • u012271873
  • u012271873
  • 2015-03-13 22:21:44
  • 524

C++中的重载,重写, 重定义 差别

一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中) ; (2)函数名字相同; (3)参数不同; (...
  • youbingchen
  • youbingchen
  • 2016-06-26 21:15:38
  • 1167

【C++拾遗】 C++函数重载、重写、重定义的区别

函数重载(overload) 函数重载是指在一个类中声明多个名称相同但参数列表不同的函数,这些的参数可能个数或顺序,类型不同,但是不能靠返回类型来判断。特征是: (1)相同的范围(在同一个作用域中);...
  • Xiejingfa
  • Xiejingfa
  • 2015-09-16 17:00:55
  • 5412

c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)

重载,隐藏(重定义),覆盖(重写)—这几个名词看着好像很像,不过其实一样都不一样!!综述:一、重载:(1) 概念:在同一个作用域内;函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数...
  • gogogo_sky
  • gogogo_sky
  • 2017-06-05 20:22:30
  • 841

类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别

转自http://blog.csdn.net/yanjun_1982/archive/2005/09/02/470405.aspx  这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个...
  • ranxiaoxu123
  • ranxiaoxu123
  • 2016-08-23 15:34:21
  • 883

C++_重载、重写和重定义的区别

参考博客:http://blog.sina.com.cn/s/blog_8ddc5c2e01013hbd.html 相信看到这个标题头就晕了,其实将他们彼此放到一起来看,就会比较清晰辨认了。 重载:函...
  • u010275850
  • u010275850
  • 2015-05-08 18:37:06
  • 3884

初识C++之函数重载、重写、重定义的区别

在C++的学习中,慢慢接触了一些很容易混淆的名词,今天就来剖析几个容易混淆的名词。 1、函数重载   重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但...
  • ljx_5489464
  • ljx_5489464
  • 2016-04-12 19:56:31
  • 1016

重载重写重定义测试代码

  • 2017年05月13日 12:27
  • 6KB
  • 下载
收藏助手
不良信息举报
您举报文章:类的重载重写重定义详解
举报原因:
原因补充:

(最多只允许输入30个字)