A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请讲解一下为何引入了重载,以其它的作用域?

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

7 个回复

倒序浏览
重载的含义就不解释。
先说函数重载,
比如有个函数 like() ,来表示喜欢什么。
现在给他定义2个版本, 1.like(string a), 2.like(string a,string b)
如果这样调用:like(apple) 就是第1个版本。 如果是like(apple,orange) 就是第二个版本,
这是最简单的例子,如果不使用重载,只能定义2个函数 like1(),like2(),重载的类型不一样,就调用的函数也不同,
like(string a) 和 like(int a)也不同。

运算符的重载,下面的是C++的,C#还没学到。
运算符的重载分成员运算符和非成员运算符
比如成员运算符,
  1. #include "stdafx.h"
  2. #include<iostream>
  3. #include<string>
  4. using namespace std;

  5. class ren
  6. {
  7. public:
  8.         int nianl;
  9.    void operator +(int a)
  10.         {
  11.                 nianl=nianl+a;
  12.         }
  13. };


  14. int _tmain(int argc, _TCHAR* argv[])
  15. {

  16.         ren xiaowang;
  17.         xiaowang.nianl=22;
  18.         xiaowang+2;
  19.         cout<<xiaowang.nianl;
  20.     system("pause");
  21.         return 0;

  22. }
复制代码
这样就方便了很多。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
{:soso_e100:}谢谢了,
回复 使用道具 举报
重载的意义在于扩展父类的功能,函数的名字不能重复的话,编程是多么痛苦。
构成重载的条件:参数类型不同或者参数个数不同,与函数的返回值无关

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
就像Console.WriteLine(),既可以输出string,又可以输出int、bool、char等,本身就是方法的重载,这是.net里常见的。
方法重载是让类以统一的方式处理不同类型数据的一种手段。是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同个数和类型的参数会自动匹配具体使用哪个方法。
方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
其实重载就是定义在一个类中方法名相同,参数类型或参数个数不同就行了的;而且还是有序的;与返回值无关;
函数重载的出现就是为了提高扩张性,提高了阅读性

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
重载就是为了扩展功能  如果我们要写很多函数 用不同的名字 那不是很烦啊!!呵呵  然后他是写在一个类里边的哈

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马