扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
不可以的,c语言翻译成汇编,函数名中不带参数的信息,但是c++翻译成汇编后,每一个函数的名字除了包含了函数名,还包含了函数的参数信息
目前成都创新互联公司已为上1000家的企业提供了网站建设、域名、虚拟主机、成都网站托管、企业网站设计、西丰网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
类成员函数名相同,参数表不同,是成员函数重载的一种表现。但重载并不限于这一种情况。
对于类成员函数,还存在一种const重载,即同名同参数列表的函数,一个有const标识,另外一个没有。调用规则为,常对象会调用const重载,而非常对象会调用不带const的重载。
除此外,重载并不仅限于类的成员函数,不归属于类的函数,包括全局函数和静态函数,所有函数都可以重载,即函数名相同,参数表不同。一个极端的例子,主函数是可以重载的,根据是否有命令行参数,主函数可以重载为int main(),和int main(int, char **)两种形式。
同一程序里,不同函数的形参可以一用。只是同一函数的形参不能相同(C语言里是这样的),如void fun(int a,int b),void funb(int a,int b);这样定义都是可以的。;但是在C++里面,有函数的重载,相同的函数名都可以有相同的形参。如 int func(int a,int b), int func(int a,int b,int c);
这不是两个函数,这是一个函数,extern "C" int listid(int id, OUT *);
中的extren通知编译器int listid(int id, OUT *)不在本源代码中实现,
"c"通知编译器用C调用方式调用在另外的一个源程序的函数,
C语言默认的调用方式就是C调用 C++就不同了,,所以最好加个"c"
另:调用方式规定了调用的时候输入参数的顺序和函数返回后输入参数占用的空间由调用程序释放还是由函数释放。这东西不一定要太懂,知道用"c"去考虑调用方式就可以了.
参数不同也是可以的,但是执行一定会有错误,而且应该不能出现同名不同参数的的令一个函数。要不连接的时候就找不到正确的函数。
c语言没有重载,c++有。
可以使用字符串传递原值和目标值,增加类型定义参数。
int template(char *dst, char *src,int type)
{
int i_aa=0;
double d_bb=0.0L;
switch(type){
case 0: //整型
i_aa = atof(src);
i_aa = i_aa * 10;
sprintf(dst,"%d",i_aa);
break;
case 1: //浮点型
d_bb = atof(src);
d_bb = d_bb - 0.05;
sprintf(dst,"%.2lf",d_bb);
break;
case 2: //字符串
sprintf(dst,"this is %s",src);
break;
default:
return src;
}
return dst;
}
函数外再处理dst了。注意长度定义。
你的这种重载方式不对,如果你仔细去看看重载的定义,你就会发现只是类型不同的函数参数重载是不好实现的,编译器不能够识别你调用的是哪一个函数。函数的重载可以传递的参数个数不一致,函数返回值不一致,但是对于有相同参数,参数类型不同这种重载一般是不能实现的。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流