На этом шаге мы рассмотрим различные формы методов, выполняющих присваивание.
Для выполнения указанных операций используются следующие методы.
valarray& valarray::operator= (const valarray& va)
Если массив на имеет другой размер, присваивание приводит к непредсказуемым последствиям.
Значение элемента в левой части любой операции присваивания массиву значений не должно зависеть от значений других элементов, находящихся в левой части. Другими словами, если операция присваивания перезаписывает значения, используемые в правой части операции присваивания, это приводит к непредсказуемым последствиям. Следовательно, элементы из левой части вообще не могут указываться в выражении, находящемся в правой части. Это ограничение объясняется тем, что порядок вычисления результата при обработке массивов значений не определен.
valarray& valarray::operator= (const T& value)
Размер массива значений не изменяется, указатели и ссылки на элементы остаются действительными.
Вдобавок допускается присваивание значений внутренних вспомогательных классов slice_array, gslice_array, mask_array и indirect_array.
На следующем шаге мы рассмотрим функции класса.