oracle 函数 实现重载_重载 - D语言教程™

D编程允许为一个函数名或在相同的范围内操作,这就是所谓的函数重载和运算符重载分别指定一个以上的定义。

重载声明的是,已被声明具有相同的名称,在同一范围内先前声明的声明的声明,除了这两个声明具有不同的参数和明显不同的定义(实现)。

当调用一个重载函数或运算符,编译器确定最合适的定义,通过比较你用来调用函数或运算符的定义中指定的参数类型的参数类型来使用。选择最合适的重载函数或运算符的过程被称为重载解析。

函数重载

可以有相同的函数名多个定义在相同的范围。该函数的定义必须由类型和/或参数在参数列表中的号码彼此不同。不能重载函数声明只相差返回类型。

以下是其中相同功能的print()被用于打印不同的数据类型的示例:

importstd.stdio;importstd.string;classprintData{public:voidprint(inti){writeln("Printing int: ",i);}voidprint(doublef){writeln("Printing float: ",f);}voidprint(strings){writeln("Printing string: ",s);}};voidmain(){printData pd=newprintData();// Call print to print integerpd.print(5);// Call print to print floatpd.print(500.263);// Call print to print characterpd.print("Hello D");}

让我们编译和运行上面的程序,这将产生以下结果:

Printing int: 5

Printing float: 500.263

Printing string: Hello D

运算符重载

可以重新定义或超载最多可用在D内置运算符因此程序员可以使用运算符与用户定义的类型也是如此。

运算符可以使用字符串运算其次是ADD,SUB超载等基于正被重载的运算符。我们可以重载运算符+,如下图所示添加两个箱子。

BoxopAdd(Boxb){Boxbox=newBox();box.length=this.length+b.length;box.breadth=this.breadth+b.breadth;box.height=this.height+b.height;returnbox;}

以下是该示例使用一个成员函数来显示运算符的重载的概念。在这里,一个对象作为参数传递,其属性将使用此对象来访问,这将调用this操作符的对象可以使用此运算符来访问,解释如下:

importstd.stdio;classBox{public:doublegetVolume(){returnlength*breadth*height;}voidsetLength(doublelen){length=len;}voidsetBreadth(doublebre){breadth=bre;}voidsetHeight(doublehei){height=hei;}BoxopAdd(Boxb){Boxbox=newBox();box.length=this.length+b.length;box.breadth=this.breadth+b.breadth;box.height=this.height+b.height;returnbox;}private:doublelength;// Length of a boxdoublebreadth;// Breadth of a boxdoubleheight;// Height of a box};// Main function for the programvoidmain(){Boxbox1=newBox();// Declare box1 of type BoxBoxbox2=newBox();// Declare box2 of type BoxBoxbox3=newBox();// Declare box3 of type Boxdoublevolume=0.0;// Store the volume of a box here// box 1 specificationbox1.setLength(6.0);box1.setBreadth(7.0);box1.setHeight(5.0);// box 2 specificationbox2.setLength(12.0);box2.setBreadth(13.0);box2.setHeight(10.0);// volume of box 1volume=box1.getVolume();writeln("Volume of Box1 : ",volume);// volume of box 2volume=box2.getVolume();writeln("Volume of Box2 : ",volume);// Add two object as follows:box3=box1+box2;// volume of box 3volume=box3.getVolume();writeln("Volume of Box3 : ",volume);}

当上面的代码被编译并执行,它会产生以下结果:

VolumeofBox1:210VolumeofBox2:1560VolumeofBox3:5400

运算符重载类型:

基本上,有三种类型的操作符如下面列出重载。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值