openfoam C++ 运算符和覆盖

openfoam C++ operator& override

template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh>> operator&
(
   const fvMatrix<Type>&,
   const tmp<GeometricField<Type, fvPatchField, volMesh>>&
);

谁能帮我理解一下OpenFoam中的这个override函数?正如我们所知,operator& override 不应该有两个参数。所以,我很困惑。有谁知道如何使用这个覆盖功能?请举个简单的例子,如果你不忙?谢谢

As we know, operator& override should not have two parameters.

不正确。

一元operator&和二元operator&有两种不同的含义。

一元 operator& 等价于 address-of operator while the binary operator& is the equivalent of the bitwise AND operator.

出于对我来说不明显的原因,发布的代码定义了 fvMatrix<Type>tmp<GeometricField<Type, fvPatchField, volMesh>> 之间的二进制 & 运算符的重载。

从语法上讲,用法是:

fvMatrix<Type> var1{};
tmp<GeometricField<Type, fvPatchField, volMesh>> var2{};

auto var3 = var1 & var2;