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