D编程 重载
2021-09-01 10:49 更新
重载指与其它函数具有相同的函数名,但参数不相同的函数实现。
函数重载
在同一个作用域中,可以为同一个函数名具有多个定义。函数的定义必须在参数列表中的参数类型/数量上彼此不同。
以下示例使用相同的函数 print()打印不同的数据类型-
import std.stdio;
import std.string;
class printData {
public:
void print(int i) {
writeln("Printing int: ",i);
}
void print(double f) {
writeln("Printing float: ",f );
}
void print(string s) {
writeln("Printing string: ",s);
}
};
void main() {
printData pd=new printData();
//Call print to print integer
pd.print(5);
//Call print to print float
pd.print(500.263);
//Call print to print character
pd.print("Hello D");
}
编译并执行上述代码后,将产生以下输出-
Printing int: 5
Printing float: 500.263
Printing string: Hello D
运算符重载
您可以重新定义或重载D中可用的大多数内置运算符。
可以根据正在重载的运算符,使用字符串op紧随其后的Add,Sub等来重载运算符,我们可以使运算符+重载以添加两个框,如下所示。
Box opAdd(Box b) {
Box box=new Box();
box.length=this.length + b.length;
box.breadth=this.breadth + b.breadth;
box.height=this.height + b.height;
return box;
}
对象作为参数传递,其属性可以使用该对象访问,可以使用 this 运算符访问调用该运算符的对象 ,如下所述-
import std.stdio;
class Box {
public:
double getVolume() {
return length * breadth * height;
}
void setLength( double len ) {
length=len;
}
void setBreadth( double bre ) {
breadth=bre;
}
void setHeight( double hei ) {
height=hei;
}
Box opAdd(Box b) {
Box box=new Box();
box.length=this.length + b.length;
box.breadth=this.breadth + b.breadth;
box.height=this.height + b.height;
return box;
}
private:
double length; //Length of a box
double breadth; //Breadth of a box
double height; //Height of a box
};
//Main function for the program
void main( ) {
Box box1=new Box(); //Declare box1 of type Box
Box box2=new Box(); //Declare box2 of type Box
Box box3=new Box(); //Declare box3 of type Box
double volume=0.0; //Store the volume of a box here
//box 1 specification
box1.setLength(6.0);
box1.setBreadth(7.0);
box1.setHeight(5.0);
//box 2 specification
box2.setLength(12.0);
box2.setBreadth(13.0);
box2.setHeight(10.0);
//volume of box 1
volume=box1.getVolume();
writeln("Volume of Box1 : ", volume);
//volume of box 2
volume=box2.getVolume();
writeln("Volume of Box2 : ", volume);
//Add two object as follows:
box3=box1 + box2;
//volume of box 3
volume=box3.getVolume();
writeln("Volume of Box3 : ", volume);
}
编译并执行上述代码后,将产生以下输出-
Volume of Box1 : 210
Volume of Box2 : 1560
Volume of Box3 : 5400
以上内容是否对您有帮助:
← D编程 继承
更多建议: