2012-02-02 76 views
0

以下哪项更快?重载操作符或使函数(C++)

方法1:

int foo (int A, int B) { 

    // write equations 
} 

方法2:

int operator| (int A, int B) { 

    // write equations 
} 
+0

为什么要比另一个更快? – 2012-02-02 16:29:12

回答

6

它们都是一个函数(因此在速度上没有区别),只是一个(操作符)可以使用更多的“花哨”语法来调用。

当你决定使用哪两种不应该是速度时,你的问题应该不是速度,而是如果你使用操作符的类型的含义是自然的。当你用它来做一些对读者来说完全令人惊讶的事情时,考虑到他知道操作员通常所做的事情,那么不要让操作员过载。 (我在这里假设你的意思是你自己的类型而不是int,并且万一你不知道,你不能在整数上重载运算符,重载运算符的参数之一必须是用户定义的类型)

+0

好猜!其实我使用用户定义的类型,但为了简单起见,我写了'int'。 – Shibli 2012-02-02 16:41:24

+0

@Shibli:一个很常见的方式来说明它是任何udt是使用'T',因为这似乎是一个非常常见的模板参数,指示“任何东西”。 – PlasmaHH 2012-02-02 16:44:12

2

没有区别,他们在每一个我所听过的编译器实现完全相同的方式在内部。可以肯定:简介!

+0

是的@DavidSeiler说,简介它,或者如果你有一台Linux机器,编译它并使用时间计算两种情况下的执行时间(偏离大量迭代)。 – crsuarezf 2012-02-03 17:03:47

8

关于执行速度没有区别。

选择只是样式和可读性之一。你应该选择一个最易理解的代码来帮助未来的维护。