Пишу класс для работы с матрицами. Указатель и кол-во строк и столбцов сокрыто, это понятно. Пришла в голову мысль, что можно для доступа к элементу матрицы возвращать ссылку (m[i][j]), а если пользователь запросит несуществующий элемент, вернуть затычку и сгенерировать исключение. Но у меня сомнения по поводу того, насколько нормальна такая практика? У кого есть опыт работы с ООП, хочется услышать ваше мнение.
Для наглядности, по моей задумке можно будет делать так mtrx.get(i,j) = value
.
Возвращать нужно уметь две ссылки, константную и неконстантную. И да, это правильная практика.
Константая ссылка нужна для того, чтобы вашу матрицу можно было всю делать константой, без нее - не скомпилируется.
Учтите, что стандартная библиотека C++ в операции []
не проверяет индексы у контейнеров-массивов, и для снижения WTF/seс
будет лучше этому правилу следовать - иначе ваш класс матриц будет лютой черепахой, и вызывать у читателя кода справедливое негодование ("какого черта индекс швыряет исключения?!").
Если вы пишете с надеждой написать что-то быстрое (догнать и перегнать MKL
!), то исключения вам придется вырубить совсем, опциями компилятора.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты