首页 > 试题广场 >

C++中,能

[不定项选择题]
C++中,能作为函数重载判断依据的是?
  • 返回类型
  • const
  • 参数个数
  • 参数类型
为什么返回值不能作为重载依据? 编译器在编译时,不会去判断函数的返回类型,也就是说,你的返回值虽然不同,函数只有调用后,编译器才会去验证类型,所以返回值不能做为重载依据。
发表于 2017-01-02 15:53:26 回复(2)
c,d不用说 对b,重载[]运算符时,有没有const区别是:有const只读。没有const读写都可以
发表于 2016-12-24 16:39:27 回复(0)
1. 重载函数依据形参取判定是否可以重载;
2. 形参个数不同,或者类型不同都是可以重载的类型;
3. 对于形参为引用或者指针的情况下,const版本和非const版本是有区别的,因为传引用是有可能改变原来的参数的。
发表于 2017-07-26 16:57:03 回复(0)

C++函数重载的判断依据

1. 函数形参的个数
2. 函数形参的类型
3. 形参的顺序
4. 不能把返回值作为函数重载的条件,原因是编译器在编译时不会去判断函数的返回类型,函数只有调用后,编译器才会去验证返回类型,所以返回值不能作为函数重载的依据。
5. 常函数 const 可以作为函数重载判断依据,原因:重载[]运算符时,有没有const的区别是:有const只读,没有const读写都可以。
总结各位大佬的回答


编辑于 2019-05-14 17:02:37 回复(2)
本人亲自在VS2012下作了测试。证明了B答案的正确性。
#include<iostream>
#include<string>
using namespace std;

void Test(int a,int b){}//①
//int Test(int a,int b){}//②
//报错,显示①和②两个函数重定义。

void Test(int a,float b){}//③
//①和③构成重载--参数的类型不同。

void Test(int a,int b,int c){}//④
//①和④构成重载--参数的个数不同。

//void Test(const int a,int b){}//⑤
//报错。显示重定义。

void Test(int& a,int b){}//⑥
void Test(const int &a,int b){}
//①和⑥构成重载--因为参数int& a和int a可以作为重载依据。

void Test(int* a,int b){}//⑦
void Test(const int *a,int b){}
//道理同上。

int main()
{
    
    return 0;
}
编译后,全部通过。
发表于 2017-11-13 21:40:09 回复(0)
const标志函数是否为只读
至于返回类型一定不是,编译器编译时不判断返回类型,只有函数调用之后才会去判断
发表于 2018-11-06 20:03:06 回复(0)
成员函数参数顺序不同也认为是参数类型不同考量,也是正确的重载,如下程序正常
#include <iostream>
#include <stdlib.h>
using namespace std;
class A
{
public:
    A(){};
    void Test(int &a, int b){};
    void Test(int b,int &a){};
    ~A(){};
};
int main()
{
    A a;
    return 0;
}


发表于 2019-09-01 23:28:51 回复(0)
返回值不能作为函数重载的判断依据
发表于 2019-08-08 08:10:29 回复(0)
函数重载不懂
发表于 2018-12-08 11:09:29 回复(0)
1. 重载函数依据形参取判定是否可以重载; 2. 形参个数不同,或者类型不同都是可以重载的类型; 3. 对于形参为引用或者指针的情况下,const版本和非const版本是有区别的,因为传引用是有可能改变原来的参数的。
发表于 2018-12-05 16:09:37 回复(0)
顶层const不能作为函数重载选择的标准

发表于 2018-05-14 10:56:12 回复(0)
const不仅仅可以修饰参数,也可以修饰函数,常函数...
发表于 2018-04-03 16:29:50 回复(0)
BCD
参数类型、个数、常函数可以作为重载判断,返回值类型不可以作为重载判断
发表于 2017-03-20 20:34:34 回复(0)
对于B选项
void fun(int *i)
void fun(const int *i)
或者
void fun(const int& i) 
void fun(int& i)
这样就会构成重载
编辑于 2017-03-30 22:11:19 回复(2)