Pull to refresh

Comments 13

Порядка 15 лет кодинга на С++ под Линукс, и я полез гуглить что означает = default.

Я лошара?

C++ это стандартизированный язык, поэтому Linux или Windows вообще никакой роли не играют.

А какого эпитета заслуживает человек, который не знает стандарта языка десятилетней давности, это ему самому решать.

Смотря какого стандарта с++ вы придерживаетесь в своём кодинге. default- конструктор был введён, если не ошибаюсь в c++11.

Мой опыт показывает, что когда человек говорит, что знает C++, на деле оказывается, что даже половины языка он ничерта не знает, не говоря уж об STL. Смотрит на лямбду, к примеру, и спрашивает, это точно С++? Но это не сильно мешает ему писать вполне грамотный код, быстрый и безопасный.

Нет, просто язык действительно очень перегружен уже и многие вещи часто не знакомы даже опытным людям.

Имхо надо стараться к упрощению и сокращению конструкций, а пока выходит наоборот и это не особо радует...

Есть ещё один минус: такую функцию не вынесешь в .cpp

А нельзя было просто сделать, чтобы все необходимые сущности умели преобразовываться в примитивы (типа, `.ToString()`), а вместо потока использовать форматирование?

Я понимаю, что статья не об этом, а о скрытых друзьях, но какая была выбрана мотивация, о такой я и спрашиваю.

Хотя бы потому что форматирование это создание где-то в памяти строки, которую потом копировать в поток. С текущим подходом каждый объект просто может как-то себя положить в поток, не используя слишком много дополнительной памяти и времени.

Лишняя связь (между потоком и точкой) это тоже нехорошо.

Здесь компромисс между быстродействием и независимостью.

Если у вас карта с миллионом точек, то создавать временную строку - так себе идея.

Тем более, что умение записываться в поток и читаться из него - это почти стандарт.

Если уж на то пошло. А зачем вообще закрывать доступ в таких чувствительных к перфомансу ситуациях? Обычно это делают во избежание инконсистентных состояний объекта или чтобы триггернуть из мутатора обработчик изменений. Но для точки и то, и другое — не слишком удачная идея.

Получается, методы класса могут быть рассыпаны по всему проекту в виде скрытых друзей. А как это соотносится с Single Responsibility Principle, вцелом читабельностью и легкостью поддержки?

Тут скрытые друзья скрыты не от самого класса (так как описаны прямо в его определении), а от функции разрешения имен.

Sign up to leave a comment.

Articles