重载运算符或使函数重载(C ++)

时间:2012-02-02 16:27:03

标签: c++ operator-overloading

以下哪项更快?

方法1:

int foo (int A, int B) {

    // write equations
}

方法2:

int operator| (int A, int B) {

    // write equations
}

3 个答案:

答案 0 :(得分:8)

执行速度没有区别。

选择只是风格和可读性之一。您应该选择最容易理解的代码来帮助将来进行维护。

答案 1 :(得分:6)

它们都是一个函数(因此速度没有差异),只是一个(运算符)可以使用更“奇特”的语法来调用。

在决定使用两者时,你的问题不应该是速度,而是如果你使用算子的类型的含义是自然的。当你用它做一些对读者来说完全令人惊讶的事情时,考虑到他知道操作员通常做什么,那么就不要让操作员超负荷。

(我在这里假设你的意思是你自己的类型而不是int,如果你不知道,你不能在int上重载运算符,重载运算符的参数之一必须是用户定义的类型)

答案 2 :(得分:2)

没有区别,它们在我听说过的每个编译器内部都以完全相同的方式实现。确定:简介!