Класс matlab::data::Array поддерживает и копию и семантику перемещения. Копии объектов Array создают копии разделяемых данных. В следующем Коде С++ переменные B и C являются копиями matlab::data::CharArray
A; все три переменные указывают на те же данные.
#include "MatlabDataArray.hpp"
int main() {
using namespace matlab::data;
ArrayFactory factory;
CharArray A = factory.createCharArray("This is a char array.");
// Create a shared copy of A
CharArray B(A);
CharArray C = factory.createCharArray("");
// Copy the contents of A into C
C = A;
return 0;
}Array поддерживает семантику копирования при записи. Копии объекта Array не разделены, когда операция записи выполняется. В предыдущем примере, изменяя переменный B создает копию объекта CharArray с обновленными данными. Однако A и C остаются разделяемые копии.
// B becomes unshared once modified
B[20] = char16_t(33);C++ семантика перемещения поддержки MATLAB® Data Arrays. Когда вы передаете переменное перемещение использования, нет никакой копии переменной.
Если вы индексируете в или используете итератор на массиве в целях только для чтения, то лучшая практика состоит в том, чтобы объявить массив как const. В противном случае API-функции могут создать копию массива в ожидании возможной операции копирования при записи.