运算符重载 VS 模板函数
operator overloading VS template function
我想编写一个将两个二维数组相乘的程序。两个数组都是模板 class 的实例(数组可以是 int、float、double)。是重载运算符 * 和 = 更好,还是编写一个函数来乘以数组?运算符重载的优点和缺点是什么?重载会影响程序的性能吗?
重载运算符没有任何性能损失。它转换为常规函数调用。运算符重载的优点只是它使您的代码更短。但是,在数组乘法的情况下,我建议使用适当命名的函数,因为向量至少有两种乘法语义——元素乘法和点积 a.k.a。标量乘法。重载的 operator* 会使含义变得模糊。
我想编写一个将两个二维数组相乘的程序。两个数组都是模板 class 的实例(数组可以是 int、float、double)。是重载运算符 * 和 = 更好,还是编写一个函数来乘以数组?运算符重载的优点和缺点是什么?重载会影响程序的性能吗?
重载运算符没有任何性能损失。它转换为常规函数调用。运算符重载的优点只是它使您的代码更短。但是,在数组乘法的情况下,我建议使用适当命名的函数,因为向量至少有两种乘法语义——元素乘法和点积 a.k.a。标量乘法。重载的 operator* 会使含义变得模糊。