А раз при записи данных, сам объект не изменяется и это не требуется, то пусть лучше будет объявлен как константный. Избавит от случайных ошибок, что уже Гуд
.
Это совсем не "Гуд". Как вы думаете, как типичные разработчики проинтерпретируют объявление
const matrix M = someOtherMatrix;
Они прочтут это объявлени так: создается копия объекта someOtherMatrix, и эта копия не изменяется. Готов спорить, что им глубоко пофиг на внутреннее устройство матрицы, указатели там или какая еще фигня используется для хранения коэффициентов матрицы. То есть, для них константность означает, что коэффициенты матрицы не изменяются! Ваш класс matrix неизменности содержимого не гарантирует.
Как вам такой код:
const int x = 10;
cin >> x;
Бред? Бред. Зачем создавать константный объект, чтобы затем его модифицировать. Но ваш класс matrix позволяет такую фигню писать. Любой константный объект matrix можно изменить оператором >>, и компилятор не сможет поймать за руку.
const matrix M = someOtherMatrix;
cin >> M;
Если вы сделаете оператор >> только для неконстантных объектов, то компилятор не пропустит предыдущий пример.