函数重载如何节省内存

时间:2013-04-11 07:38:29

标签: c# c++ oop c#-4.0

函数重载如何节省内存?

以下两种类型的函数定义之间有什么区别?应该使用哪种函数?

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)

6 个答案:

答案 0 :(得分:8)

  

函数重载如何节省内存。

在运行时,它没有。 在编译时解决了重载,因此它对性能没有影响。

  

以下两种功能有什么区别   定义,

它们是重载函数,采用多个参数,IMO更具可读性

  

应该使用哪一个?

重载更具可读性(您可能也会看到Member Overloading - MSDN)但如果您使用的是C#4.0或更高版本,那么您也可以使用optional parameters

将其定义为:

public int ADD(int a, int b, int c = 0, int d = 0)
{
    //..... your code
    return result;
}

称之为:

ADD(2, 3);
ADD(2, 3, 4);
ADD(2, 3, 4, 5);

答案 1 :(得分:4)

函数重载不会节省内存。

答案 2 :(得分:3)

当我们编写重载方法时,它不会保存任何空间而不会提高性能。它仅用于更好的可读性和实现多态性。

答案 3 :(得分:2)

嗯,不同的是名字;-)。 关于你应该使用哪一个...长名称使用更多字节的内存,但在任何可以运行C#-4的系统中都可以忽略不计,所以只需使用你最喜欢的。

我个人会使用:

Add(a,b);
Add(a,b,c);
Add(a,b,c,d);

XXXNumbers对参数列表来说是多余的,因此它什么都不提供。

全大写版本只是丑陋。

答案 4 :(得分:0)

顺便说一下,这些只是函数调用而不是它们的原型/定义

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

这些将充当重载函数

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)

这三个将扮演三个不同的功能(不过载)。

重载函数具有相同的函数名称和不同数量的参数。 内部“名称修改”发生,编译器必须创建三个不同的功能。它在保存内存方面没有多大帮助,但提高了可读性

答案 5 :(得分:0)

函数重载从不节省空间,内部编译器创建两个不同版本的函数,并根据调用它将调用不同版本的函数。

函数重载使代码更具可读性。

1)

ADD(a,b)
ADD(a,b,c)
ADD(a,b,c,d)

2)

AddTwoNumbers(a,b)
AddThreeNumbers(a,b,c)
AddFourNumbers(a,b,c,d)

这与重载相同,但上面的代码更具可读性。