为了账号安全,请及时绑定邮箱和手机立即绑定

c++里相似函数体对应不同数据类型如何简化?

c++里相似函数体对应不同数据类型如何简化?

C++
慕粉1469495933 2016-10-26 12:40:36
int insert(int a[],int n,int w) { int i,j; for(i=0;i<n;i++) if(w<=a[i]) break; for(j=n;j>i;j--) a[j]=a[j-1]; a[i]=w; for(i=0;i<=n;i++) cout<<a[i]<<' '; cout<<endl; return 0; } float insert(float a[],int n,float w) { int i,j; for(i=0;i<n;i++) if(w<=a[i]) break; for(j=n;j>i;j--) a[j]=a[j-1]; a[i]=w; for(i=0;i<=n;i++) cout<<a[i]<<' '; cout<<endl; return 0; }这段代码在主函数重载根据输入的数据类型选择不同的字段,有没有什么方法让insert(*** a[],int n, *** w)里的数据类型根据输入时的结果自动替换“***”?
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

如果只有 int 和 float这两种类型变化,你可以像你这样重载函数。

如果有更多的变体,那可以用函数模板来简化。

查看完整回答
反对 回复 2016-10-26
?
qq_陌上桑_0

TA贡献1条经验 获得超0个赞

我最近也在考虑这个,我觉得这个答案并不能解决问题,我只想问,在c++中,这么能用一个变量可以接受3和3.0两种数据类型,这个变量该怎么定义还是不定义?Python中可以,因为他弱化数据类型,而Python又是用c写的,所以应该也能行,也么做呢?

查看完整回答
反对 回复 2017-09-12
  • onemoo
    onemoo
    LZ问题中的那个情形是函数的逻辑相同,只是某些地方的具体类型不同,这样比较适合套用模板来实现。 对于你说的“如何用一个变量接受3和3.0两种数据类型”。可以用union来实现。也可以自己写一个类,通过重载运算符来支持保存不同类型的数据。 因为C++是强类型语言,无法直接把变量绑定为不同类型(可以通过前述技巧实现)。但也可以做到“弱化类型”风格的编程,那就是采用“泛型编程”范式。比如标准库<algorithm>中的算法完全是泛型的,与具体类型无关。当然C++的泛型也是通过模板来实现的。
  • 2 回答
  • 0 关注
  • 1017 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信