首页 > 试题广场 >

下列对函数double add(int a , int b)

[不定项选择题]
下列对函数double add(int a , int b)进行重载,正确的是()
  • int add(int a ,int b ,int c)
  • int add(double a , double b)
  • double add(double a , double b)
  • int add(int a , int b)
推荐
【正确答案】A B C
【解析】函数重载的概念:在同一作用域中,同名函数的形式参数(参数个数、类型或者顺序)不同时,构成函数重载,与返回值类型无关。函数重载减少了函数名的数量,避免了名字空间的污染,提高程序的可读性。
A 选项正确,参数个数不一样
B 选项正确,参数类型不一样
C 选项正确,参数类型不一样
D 选项错误,参数类型、个数、顺序一致

函数重载知识点讲解】
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp10
编辑于 2021-11-17 14:56:54 回复(0)
A,B,C 参数类型不同,只是返回值不同的话不算函数重载
发表于 2015-04-01 16:45:28 回复(0)
override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。
重写(覆盖)的规则:
   1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
   2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
   3、重写的方法的返回值必须和被重写的方法的返回一致;
   4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
   5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
   6、静态方法不能被重写为非静态的方法(会编译出错)。
 
overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
重载的规则:
   1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
   2、不能通过访问权限、返回类型、抛出的异常进行重载;
   3、方法的异常类型和数目不会对重载造成影响;
编辑于 2021-11-17 14:56:54 回复(1)
在C++中,函数的重载取决于函数的特征标即函数的参数列表。同名的函数,特征标不一样则函数不一样,A、B、C 的参数列表与题目给出的特征标数量或类型不一样,因此正确答案为A、B、C
发表于 2015-05-12 22:41:28 回复(1)
函数的重载分为:参数的个数,参数的类型,const(&或*)三种类型。
注意:1、除了函数的返回类型不一样其他的都相同的函数不是函数重载
           2、函数参数中仅仅是const参数和非const参数区别,也不是函数重载 eg; int  g(int a);  int g(const int a )不是函数重载

发表于 2016-06-16 16:18:58 回复(0)
重载函数的参数个数、参数类型和参数顺序三者中必须至少有一个不同,返回值类型相同与否都可以。
发表于 2016-03-01 09:38:22 回复(0)

重载是一种可使函数、运算符等处理不同类型数据或接受不同个数的参数的方法,通过重载,函数可以存在具有相同的名字,但是参数列表不相同的情形(参数的个数不同,或参数的类型不同),这样的同名、但不同参数的函数或者方法之间,互相称之为重载函数或者方法。需要注意的是,不能用返回值来区分重载函数。

通过以上分析可以发现,选项A中定义的方法与题目中的方法参数个数不同,选项B与选项C的方法与题目中的方法参数类型不同,而选项D与题目中的方法参数个数与类型都相同。因此,选项A、选项B和选项C正确,选项D错误。

重载函数的定义如下:在相同的声明域中的函数名是相同的,而参数表是不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。两个重载函数必须在下列一个或两个方面有所区别:

1)函数有不同参数个数。

2)函数有不同参数类型。

根据上述定义可知,函数名相同,而函数的参数类型、参数个数不同,才能构成函数的重载。

挨个分析如下:
#include <iostream>
using namespace std;
double add(int a , int b); // 题目
int add(int a , int b, int c); // A 选项
void main()
{
cout<<add(2, 5)<<endl; // 结果为7
cout<<add(2, 5, 7)<<endl; // 结果为14
}
double add(int a , int b) // 题目
{
return a+b;
}
int add(int a , int b, int c) // A 选项  参数个数,与返回值类型无关
{
return a+b+c;
}


#include <iostream>
using namespace std;
double add(int a , int b); // 题目
int add(double a, double b); // B 选项
void main()
{
cout<<add(2, 5)<<endl; // 结果为7
cout<<add(1.2, 7.5)<<endl; // 结果为8
}
double add(int a , int b) // 题目
{
return a+b;
}
int add(double a, double b) // B 选项  参数类型,与返回值类型无关
{
return a+b;
}


#include <iostream>
using namespace std;
double add(int a , int b); // 题目
double add(double a , double b); // C 选项
void main()
{
cout<<add(2, 5)<<endl; // 结果为7
cout<<add(1.2, 7.5)<<endl; // 结果为8.7
}
double add(int a , int b) // 题目
{
return a+b;
}
double add(double a , double b) // C 选项  参数类型
{
return a+b;
}

从上面的例子可以看出:由于使用函数的重载,因而不仅方便函数名的记忆,而且更主要的是完善了同一个函数的代码功能,给调用带来了许多方便。程序中各种型式的sum函数都称为sum的“重载函数”。 需要说明的是:
1) 重载函数必须具有不同的参数个数或不同的参数类型,若只有返回值的类型不同是不行的。
2) 当函数的重载带有默认参数时,应该注意避免二义性。
例如: int fun(int a, int b = 0);
int fun(int a); 是错误的。
因为如果有函数调用fun(2)时,编译器无法准确地确定应调用哪个函数。
编辑于 2018-07-05 10:41:18 回复(0)
不能通过访问权限、返回类型、抛出的异常进行重载,答案有误,仅选C
发表于 2016-10-06 22:08:56 回复(0)
a,b,c不同的签名即是函数重载
编辑于 2016-03-01 23:11:41 回复(0)
重载与返回值无关
发表于 2021-04-01 20:04:34 回复(0)
重载,和返回类型无关,只能形参顺序,类型,数量有关~
发表于 2021-03-29 09:55:27 回复(0)
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数
发表于 2021-03-26 16:43:03 回复(0)
1 成员函数重载特征:
   a 相同的范围(在同一个类中)

   b 函数名字相同

   c 参数不同

   d virtual关键字可有可无

2 重写(覆盖)是指派生类函数覆盖基类函数,特征是:

   a 不同的范围,分别位于基类和派生类中

   b 函数的名字相同

   c 参数相同

   d 基类函数必须有virtual关键字

3 重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

   a 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。

   b 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。否则就是重写了。
发表于 2021-03-22 16:42:13 回复(0)
重载函数的参数个数或类型必须至少有其中之一不同,函数返回值类型可以相同也可以不同;
但是要注意,不允许参数类型和个数都相同,而只有返回值不同。
发表于 2020-12-05 14:45:29 回复(0)

函数重载的规则:
•函数名称必须相同。
•参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
•函数的返回类型可以相同也可以不相同。
•仅仅返回类型不同不足以成为函数的重载。

发表于 2020-02-25 09:02:04 回复(0)

函数重写:

1、分别位于基类和派生类;

2、函数名称相同,参数相同,返回值相同;

3、基类函数必须使用virtual关键字;

4、重写函数的访问限定符可以不同;

函数重载:

1、必须在同一个类中;

2、函数名相同,参数不同(数量,顺序,名称)与返回值无关;

3、virtual可有可无;

函数隐藏:

1、分别位于基类和派生类;

2、函数名相同,返回值可以不同;

3、参数相同,不能有virtual,此时,基类的函数被隐藏;

4、参数不同,不论有没有virtual关键字,基类的函数都被隐藏

发表于 2020-02-04 14:57:09 回复(0)
重载主要看参数,参数相同返回值不同不是重装
发表于 2019-10-11 14:34:37 回复(0)

重载(同一类内不覆盖的函数)必须对参数列表动刀子。重写(父子类会覆盖的函数)壳严格一致,内里仅异常等一致。

发表于 2018-10-11 01:26:24 回复(0)
函数重载:多个函数具有相同的函数名,但形参的个数或类型不同,
                  编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

发表于 2018-05-28 17:37:03 回复(0)
返回类型不同不算重载。
发表于 2018-01-20 09:28:15 回复(0)
除了函数的返回类型不一样其他的都相同的函数不是函数重载
发表于 2018-01-02 17:56:39 回复(0)