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

Может ли кто-нибудь помочь мне понять эту функцию переопределения в OpenFoam? Как мы знаем, оператор и переопределение не должны иметь двух параметров. Итак, я запутался. И кто-нибудь знает, как использовать эту функцию переопределения? Приведите, пожалуйста, простой пример, если вы не заняты? Спасибо.

-3
Xiongguo Liu 27 Фев 2018 в 00:53

1 ответ

Лучший ответ

Как мы знаем, переопределение operator& не должно иметь двух параметров.

Не правда.

Унарный operator& и двоичный operator& имеют два разных значения.

Унарный operator& эквивалентен address- оператора, а двоичный operator& эквивалентен побитовый оператор И.

По причинам, которые мне не очевидны, опубликованный код определяет перегрузку бинарного оператора & между fvMatrix<Type> и tmp<GeometricField<Type, fvPatchField, volMesh>>.

Синтаксически говоря, использование будет следующим:

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

auto var3 = var1 & var2;
3
R Sahu 27 Фев 2018 в 01:04