Ilya
Kirill
В C++11 появились rvalue-ссылки и универсальные ссылки, которые в некоторых случаях еще эффективнее.
Kirill
Угу
Kirill
Общее правило такое: если параметр не является примитивным типом, и не требуется его изменение в теле функции, его следует передавать по ссылке на константу.
Ned
Kirill
Потому что для них выигрыша от ссылки нет (точнее, может даже быть проигрыш, если sizeof(x) < sizeof(void*)), а избыточные спецификаторы const в сигнатуре запутывают пользователя. Но стоит заметить, что спецификатор const можно добавить только в определении функции, исключительно для защиты от случайного изменения и нарушения логики.
Ned
чёт ты неправильный какой-то. говорят "лепи конст везде где можно"
Kirill
Внутри тела функции - да.
Ned
а в списке параметров он напротив показывает, что объект не будет меняться в процессе работы функции
Kirill
Если у функции 5 или более параметров, и все const, ее сигнатура начинает выглядеть печально.
Ned
ну хз, я и примитивные через конст сую
Ned
ну в чём-то ты прав
Ned
просто
Ned
если используется передача по значению, никто не мешает тебе ошибиться в теле и изменить значение.
Ned
получим неправильную работу и весьма затруднённую отладку
Ned
ссылки на примитив - очевидная роскошь, а вот конст считаю мастхэв
Kirill
Поэтому я и написал про возможность указания const в определении, куда пользователь смотреть не будет.
Kirill
Для компилятора же, если есть int x, и void f(const int x) и void g(int x), и x передается в них, то никакой разницы нет.
Kirill
К слову, это справедливо только для параметров функций. Если речь идет об объявлении обычной константной переменной, то компилятор имеет право разместить ее в специальной области памяти read-only.
Ned
Ned
Ned
и при ассемблировании явно подставляются на место
Ned
как дефайн только на уровень ниже
🦥Alex Fails
static constexpr const int a;
Ned
🦥Alex Fails
В тему доведения до абсурда
🦥Alex Fails
читал ночью исходники андроида
Kirill
🦥Alex Fails
Да, для примитивных типов конст реф не нужен, т.к. по факту, это указатель
Ned
🦥Alex Fails
Ned
абсурд, что не задано значение - это раз
🦥Alex Fails
я его не указал
🦥Alex Fails
Там была какая-то пижня, которую я забыл
Ned
статик позволяет быть видимым в других файлах - а это вообще говоря непозволительно для констант
Ned
ну типа очень плохой стиль
Ned
хуже goto
Ned
а почему бы не посчитаться на этапе компиляции - я не понимаю
🦥Alex Fails
Ned
Ned
путаюсь, сорян
Ned
левая шняга
🦥Alex Fails
Но он избыточен, т.к. const-квалифицированные переменные по умолчанию имеют внутреннюю связанность
Ned
✙ Fatum ✙
🦥Alex Fails
Kirill
Не знаю, кто такой Прата. Я читал Саттера, и в Яндексе этому были рады, как я понял.
✙ Fatum ✙
Ned
🦥Alex Fails
Ned
сартр
🦥Alex Fails
Kirill
😆
Ned
Kirill
Какой оклад? Не факт, что меня вообще возьмут.
✙ Fatum ✙
кстати, вот вы за что больше: за чтение книг? или за онлайн курсы? или за такие ресурсы как codewars, hackerrank? что эффективнее?
🦥Alex Fails
с тебя книжка
Тут вроде было. "Решение сложных задач"
✙ Fatum ✙
🦥Alex Fails
редлагаю перейти в supapro.cxx
🦥Alex Fails
Kirill
Хз, как считать. С C++ я познакомился на первом курсе в начале 2011-го.
Kirill
Но в универе я не так активно кодил.
Kirill
С 2014 работаю в конторе.
Ned
кстати, вот вы за что больше: за чтение книг? или за онлайн курсы? или за такие ресурсы как codewars, hackerrank? что эффективнее?
честно гря, ни книги ни курсы не прививали мне столько знаний, сколько решение прикладных задач и поиск решения проблем.... я неопытное говно и не стесняюсь, моё мнение может мало стоить, но мне легче всего учиться прогать, прогая, причём не бояться экспериментов и не стараться сразу сделать всё идеально.... как-то так...
видел репост, где написано, что лучше взять прогером олимпиадника. потому что если надо сделать шар, академический прогер начнёт с программирования токарного станка, а олимпиадник сделает куб, потому что он это умеет, а затем облепит его костылями, чтобы тот катался.
✙ Fatum ✙
честно гря, ни книги ни курсы не прививали мне столько знаний, сколько решение прикладных задач и поиск решения проблем.... я неопытное говно и не стесняюсь, моё мнение может мало стоить, но мне легче всего учиться прогать, прогая, причём не бояться экспериментов и не стараться сразу сделать всё идеально.... как-то так...
видел репост, где написано, что лучше взять прогером олимпиадника. потому что если надо сделать шар, академический прогер начнёт с программирования токарного станка, а олимпиадник сделает куб, потому что он это умеет, а затем облепит его костылями, чтобы тот катался.
ахахах
Kirill
Ну это спорно
Kirill
На мой взгляд преимущество олимпиадников только одно: охрененная соображалка.
Anonymous
Kirill
Ну да, и она тоже. :)
Kirill
И еще физика, химия
Kirill
:D
Kirill
Помните задачки в сборнике задач с собеседований? Там реально знания по физике нужны.