c++overload_override和重载的区别

c++overload_override和重载的区别重载的含义是什么?重载有哪些?重载方法,重载函数该怎么写?重载的特点是什么?重载的作用是什么?使用重载时应该注意什么?

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:在编程过程中,难免会遇到一种方法或者一种函数可以拥有不同的参数,这就是用到了重载,下面我们一起去探索重载的秘密:

一.重载的含义:

它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,我们可以根据参数类型不同去选择我们所需要的;

二.重载的分类:

1.方法重载:

在同一个类中,方法名称相同,但是参数列表不同(参数个数不同、参数类型不同、不同类型的排列顺序不同),称之为方法的重载,方法的重载不包含继承关系,重载不用考虑方法的返回值类型,重载类型顺序必须不同;
例如:

       class First
        { 
   
            public void Study()
            { 
   
                Console.WriteLine("我是没有参数的overload");
            }
            public void Study(string name)
            { 
   
                Console.WriteLine("我是带有一个参数的overload {0}", name);
            }
            public void Study(string name, int age)
            { 
   
                Console.WriteLine("我是带有两个参数的overload {0} 我创建了{1}个参数", name, age);
            }
            public void Study(string name, int age, string sex)
            { 
   
                Console.WriteLine("我是带有三个参数的overload {0} 我创建了{1}个参数 我想去 {2}", name, age, sex);
            }
        }

在这里插入图片描述
看看运行结果:
在这里插入图片描述

2.函数重载:

指一个类中构造函数也可以重载,只要符合重载的规则即可,重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同;
两个重载函数必须在下列一个或两个方面有所区别:
1、函数的参数个数不同。
2、函数的参数类型不同或者参数类型顺序不同,

举例:

          public First()
            { 
   
                Console.WriteLine("我是第一个重载函数");
            }
            public First(int a)
            { 
   
                Console.WriteLine("我是第{0}个重载函数",a);
            }
            public First(string a)
            { 
   
                Console.WriteLine(a);
            }
             static void Main(string[] args)
        { 
   
            First first = new First();
            First ff=new First(2);
            First dd = new First("我是第三个重载函数");
           Console.ReadLine();
        }

运行结果:
在这里插入图片描述

3.运算符重载:

重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表,由于涉及到新的关键字,本重载将会在下文详细解释,敬请期待!!!

三.重载的特点:

  1. 名称相同,参数列表不同;
            public void Study()
            { 
   
                Console.WriteLine("我是没有参数的overload");
            }
            public void Study(string name)
            { 
   
                Console.WriteLine("我是带有一个参数的overload {0}", name);
            }
            public void Study(string name, int age)
            { 
   
                Console.WriteLine("我是带有两个参数的overload {0} 我创建了{1}个参数", name, age);
            }
            public void Study(string name, int age, string sex)
            { 
   
                Console.WriteLine("我是带有三个参数的overload {0} 我创建了{1}个参数 我想去 {2}", name, age, sex);
            }
  1. 参数个数不同,参数类型不同;
      public void Study(string name, int age)
            { 
   
                Console.WriteLine("我是带有两个参数的overload {0} 我创建了{1}个参数", name, age);
            }
            public void Study(string name, int age, string sex)
            { 
   
                Console.WriteLine("我是带有三个参数的overload {0} 我创建了{1}个参数 我想去 {2}", name, age, sex);
            }
  1. 若参数的个数相同,那么参数类型的顺序必须不一样;
public void Study(string name,int age)
            { 
   
                Console.WriteLine("我是带有一个参数的overload {0}", name);
            }
            public void Study(string me, int e)
            { 
   
                Console.WriteLine("我是带有两个参数的overload {0} 我创建了{1}个参数", me, e);
            }

如果按照如上所写,会出现以下错误:也就是相同了
在这里插入图片描述

四.重载的作用:

  1. 重载的好处就是,不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。
  2. 重载的最直接作用是方便我们可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

五.重载的注意事项:

  1. 在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
  2. 不能通过访问权限、返回类型进行重新加载;
  3. 方法的数目不会对重新加载造成影响;
  4. 对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

以上就是本次的主要内容了,若有不足还请指正…????????

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185505.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月5日 下午10:46
下一篇 2022年10月5日 下午10:46


相关推荐

  • java调用dll 动态链接库(dll)初始化例程失败._动态链接库(DLL)初始化例程失败,是怎么回事?…

    java调用dll 动态链接库(dll)初始化例程失败._动态链接库(DLL)初始化例程失败,是怎么回事?…wzcdlg dll 是系统文件 不要删除文件 wzcdlg dll 包含在以下软件 WindowsXPHom Deutsch 更多信息版本 5 1 2600 1276 文件日期 2003 09 2621 14 23 文件大小 58 368 字节文件道路 C WINDOWS system32 wzcdlg dll 显示 wzcdlg dll 细节 WindowsXP

    2026年3月26日
    1
  • ps磨皮滤镜portraiture安装教程mac[通俗易懂]

    ps磨皮滤镜portraiture安装教程mac[通俗易懂]PortraitureforMac激活成功教程版是Photoshop上一款支持自动皮肤平滑、愈合和增强效果的磨皮插件,这款portraiture磨皮滤镜主要针对人像进行皮肤修饰、磨皮润色等处理,portraituremac激活成功教程版还可以平滑和去除缺陷,同时保留皮肤纹理和重要的人像细节,功能十分强大,这里为大家带来portraiture激活成功教程版,并附上激活成功教程补丁。portraiture激活成功教程方…

    2022年7月22日
    47
  • phpstrom 2021 激活码(最新序列号破解)

    phpstrom 2021 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    36
  • 为了追学姐,用python把她的照片做成了游戏,她看了…

    为了追学姐,用python把她的照片做成了游戏,她看了…pygame 开发小游戏 附录完整代码 建议收藏

    2026年3月17日
    1
  • C/C++程序内存的各种变量存储区域和各个区域详解

    C/C++程序内存的各种变量存储区域和各个区域详解C 语言在内存中一共分为如下几个区域 分别是 1 内存栈区 存放局部变量名 2 内存堆区 存放 new 或者 malloc 出来的对象 3 常数区 存放局部变量或者全局变量的值 4 静态区 用于存放全局变量或者静态变量 5 代码区 二进制代码 知道如上一些内存分配机制 有助于我们理解指针的概念 C C 不提供垃圾回收机制 因此需要对堆中的数据进行及时销毁 防止内存泄漏 使用 free 和 de

    2026年3月18日
    2
  • JAVA语法基础 标识符 关键字 注释 变量 数据类型与类型转换

    JAVA语法基础 标识符 关键字 注释 变量 数据类型与类型转换1JAVA 语法基础 1 1 标识符标识符可以简单的理解成一个名字 在 Java 中 我们需要标识代码的很多元素 包括类名 方法 字段 变量 包名等等 我们选择的那个名称就称为标识符 一个正确的标识符需要遵循以下规则 1 标识符可以由字母 数字 下划线 美元符 组成 但不能包含 空格等其它特殊字符 2 不能以数字开头 如 123name 就是不合法 3 标识符严格区分大小写 如 tmooc 和 tMooc 是两个不同的标识符 4 标识符的命名最好能反映出其作用 做到见名知意

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号