返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++之重载 重定义与重写用法详解
  • 291
分享到

C++之重载 重定义与重写用法详解

2024-04-02 19:04:59 291人浏览 八月长安
摘要

目录一、重载(重载函数)1、代码实现在一个类中fun()函数的重载:2、运行程序之后的打印二、重定义(函数同名隐藏)1、代码实现在两个类中分别定义一个函数(函数名要求相同):2、运行

一、重载(重载函数)

重载函数是c++为了方便使用,允许在同一范围中(一个类中)声明几个功能类似的同名函数,但是这些同名函数的形参(指参数的个数、类型或者顺序至少有一个)必须不同

1、代码实现在一个类中fun()函数的重载:


#include<iOStream>
using namespace std;
class Base
{
public:
	void fun()
	{
		cout << "Base::fun()" << endl;
	}
	void fun(int a)
	{
		cout << "Base::fun(int)" << endl;
	}
	void fun(int a, float b)
	{
		cout << "Base::fun(int,float)" << endl;
	}
};
void main()
{
	Base c;
	c.fun();
	c.fun(1);
	c.fun(1, 1.0);
}

2、运行程序之后的打印

在这里插入图片描述

二、重定义(函数同名隐藏)

如果一个类,存在和父类相同的函数(此处指函数名相同,对返回类型、形参没有要求),那么,这个类将会覆盖其父类的方法,除非你在调用的时候,强制转换为父类类型,否则试图对子类和父类做类似重载的调用是不能成功的,此方法称为重定义。(bb太多文字怕看官老爷晕乎乎,直接上代码)

1、代码实现在两个类中分别定义一个函数(函数名要求相同):


class Base
{
public:
	void fun()
	{
		cout << "Base::fun()" << endl;
	}
};
class D :public Base
{
public:
	void fun(int)
	{
		cout << "D fun(int)" << endl;
	}
};
int main()
{
	D d;
	//d.fun() 如果这样调用 系统会提示缺少参数
	d.fun(1);//同名隐藏,此时调用的是子类中的fun函数
	//如果想调用父类对象,下面的语句可以帮你实现,你需要指出调用的是谁的fun
	d.Base::fun();
	
}

2、运行程序之后的打印

在这里插入图片描述

三、重写(覆盖)

子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,也就是子类重新定义父类中有相同名称和参数的虚函数(virtual),这就需要采用方法的重写。方法重写又称方法覆盖。

1、代码实现在子类重写父类虚函数:


class Person
{
public:
	virtual void Eat()
	{
		cout << "Person Eat food" << endl;
	}
	virtual void sleep()
	{
		cout << "Person sleep " << endl;
	}
	void study()
	{
		cout << "We need study" << endl;
	}
};
class Lily:public Person
{
public:
	virtual void Eat()
	{
		cout << "Lily Eat dumpling" << endl;
	}
	virtual void sleep()
	{
		cout << "Lily sleeps and dreams " << endl;
	}
};
void main()
{
	Lily L;
	
	Person *pr = &L;
	pr->Eat();
	pr->sleep();
	L.study();
}

2、运行程序之后的打印

在这里插入图片描述

我们看完三个方法的实现之后来做一个横向比较:

函数 特点
函数重载 在同一个类中,同名函数形参的个数、类型、顺序至少有一个不同
重定义(同名隐藏) 子类中存在和父类相同的函数(此处指函数名相同,对返回类型、形参没有要求),屏蔽了父类的同名函数
重写(覆盖) 子类对父类继承的虚函数内容想做一定的修改

到此这篇关于C++之重载 重定义与重写用法详解的文章就介绍到这了,更多相关C++之重载 重定义与重写内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++之重载 重定义与重写用法详解

本文链接: https://www.lsjlt.com/news/135363.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++之重载 重定义与重写用法详解
    目录一、重载(重载函数)1、代码实现在一个类中fun()函数的重载:2、运行程序之后的打印二、重定义(函数同名隐藏)1、代码实现在两个类中分别定义一个函数(函数名要求相同):2、运行...
    99+
    2024-04-02
  • C++重载的奥义之函数重载详解
    目录一、基本定义        二、应用举例        三、非函数重载的情况四、函数重载的使用原则...
    99+
    2023-05-16
    C++ 函数重载 C++ 函数 C++ 重载
  • C++重载的奥义之运算符重载详解
    目录0、引言1、运算符重载定义2、作为成员函数进行重载3、作为全局函数进行重载4、运算符重载的一些规则0、引言 重载,顾名思义从字面上理解就是重复装载,打一个不恰当的比方,你可以用一...
    99+
    2023-05-16
    C++ 运算符重载 C++ 运算符 C++ 重载
  • Java基础之重载(Overload)与重写(Override)详解
    目录一、重载(Overload)二、重写(Override)三、重写与重载之间的区别四、总结一、重载(Overload) 重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相...
    99+
    2024-04-02
  • C++函数重载的定义与原因详解
    目录引例函数重载的定义函数重载规则为什么C不支持函数重载而C++可以内部名称总结引例 如果要求你只能通过print函数,即能打印字符串,又能打印一个整型。 虽然在C语言中我们可以通过...
    99+
    2024-04-02
  • Java重写,重载,多态怎么定义使用
    本篇内容主要讲解“Java重写,重载,多态怎么定义使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java重写,重载,多态怎么定义使用”吧! 1.重写: ...
    99+
    2024-04-02
  • 详解Java方法method的定义与调用及重载
    目录方法的定义和调用什么是方法方法的声明格式方法的调用方式方法的详细说明总结方法的重载什么是方法重载构成方法重载的条件总结方法的定义和调用 什么是方法 方法(method)就是一段用...
    99+
    2024-04-02
  • C++填坑的重写,重载和隐藏的详解
    目录重写重载隐藏总结重写 重写的定义:重写发生在基类和派生类的继承关系之中,被定义为虚函数的基类成员函数,由派生类进行重新定义和实现,同时隐藏掉基类的方法(即派生类调用该重...
    99+
    2024-04-02
  • 深入了解Java方法的重载与重写
    目录1.方法的重载1.1.基本介绍1.2.重载的好处1.3.重载使用细节1.4.可变参数2.方法的重写2.1.基本介绍2.2.重写的好处2.3.重写的细节3.重写与重写的对比1.方法...
    99+
    2024-04-02
  • C++ 函数重载与重写有何区别?
    c++++ 函数重载与重写:重载:同名函数具有不同的参数类型或数量,编译时选择合适版本。重写:派生类中与基类同名函数,覆盖基类实现,提供派生类特定实现。重载特征:参数类型或数量不同,编译...
    99+
    2024-04-13
    c++ 函数重载 函数重写 作用域
  • C++ 函数重载与重写的异同分析
    函数重载和重写的异同点:相同点:提供函数的多组变体,名称重用简化代码。不同点:作用域:重载在同一作用域,重写在不同作用域。参数或返回类型:重载参数类型不同,重写允许参数类型或返回类型不同...
    99+
    2024-04-21
    c++ 函数重载 函数重写 作用域
  • C++入门语法之函数重载详解
    目录写在前面1 函数重载的概念2 函数重载原理总结写在前面 关于C语言的编译与链接不懂的可以看一下下面的文章,先回顾一下以前的知识。 详解C语言的编译与链接 1 函数重载的概念 函数...
    99+
    2024-04-02
  • C++类与对象之运算符重载详解
    目录运算符重载加号运算符重载左移运算符重载递增运算符重载递减运算符重载赋值运算符重载关系运算符重载函数调用运算符重载总结运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其...
    99+
    2024-04-02
  • Java中方法重写与重载的区别
    目录一、重写(Override)二、重载(Overload)三、总结Java方法重写(Override)与重载(Overload)的区别(超详细) 首页在我们要学习这个知识点之前,应...
    99+
    2024-04-02
  • C++ 函数重载和重写的理解和使用
    c++++ 中函数重载允许在同一类中定义同名函数,但参数列表不同;函数重写发生在子类中定义一个与父类同名且参数相同的函数,子类函数将覆盖父类函数。实战示例中,重载函数用于针对不同数据类型...
    99+
    2024-04-20
    函数重载 函数重写 c++
  • C++ 函数重载和重写中的虚函数与动态绑定
    函数重载和重写:函数重载允许在同一类中创建具有不同参数列表的同名函数,而函数重写是在继承关系中用子类覆盖基类的同名函数。虚函数和动态绑定:虚函数允许子类以自己的方式实现父类方法,并在函数...
    99+
    2024-04-20
    函数重载 虚函数 c++
  • C++函数重载怎么定义使用
    这篇文章主要介绍了C++函数重载怎么定义使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++函数重载怎么定义使用文章都会有所收获,下面我们一起来看看吧。一、函数重载分析(上)1.1 重载的定义定义:同一个标...
    99+
    2023-06-30
  • C#重载运算符怎么定义
    本文小编为大家详细介绍“C#重载运算符怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#重载运算符怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C# 运算符重载您可以重定义或重载 C#...
    99+
    2023-06-17
  • Java基础之方法重写详解
    一、java方法重写 方法的重写是子类根据需求对父类继承的方法进行重新的编写,在重写时,可以使用super方法的方式来保留父类中的方法,注意:构造方法不可以被重写。 创建一个人类,属...
    99+
    2024-04-02
  • 详解Java中方法重写与重载的区别(面试高频问点)
    Java中方法重写与重载的区别 重 写 重 载 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作