C++ Chanel
608 subscribers
44 photos
6 videos
53 links
Download Telegram
Ссылки как параметры

Функции, это одна из неотъемлемых частей C++ которою можно встретить в любом проекте.С их помощью можно избегать дублирования, делать код компактным и читаемым.Без функций невозможен полиморфизм(который есть одним из трех основных принципов обьектно-ориентированого-програмирования).Лямбды, шаблоны и тд. станут не доступными без функций.

Несколько постов назад я писал про ссылки, и большая их часть используется именно в функциях, а точнее в параметрах.
Во первых разберемся в чем отличие ссылок в параметрах от обычного by value на примере:
void value(int v){
v = 10;
}
void ref(int& r){
r = 20;
}

int main(){
int A = 100;
value(A);
cout<<A<<"\n";
ref(A);
cout<<A<<"\n";
}

Вывод:
100
20


Как мы видим, когда мы используем обычную переменную в качестве параметра - ничего не происходит.Но когда изменяем by value на by reference(int v на int& r) значение переменной внутри main изменяется.

Но почему так происходит?
А все дело в том, что когда мы передаем в функцию по значению, то мы создаем новую копию того объекта, который внесли в аргумент(в нашем случае переменная по значению это v, а аргумент это A).Но если мы используем в параметре ссылку - мы создаем не копию объекта,а псевдоним/альтернативное имя/синоним/alias.Он не выделяет столько же памяти под новый объект.

Имеет ли ссылка память - в стандарте не указано, и на то есть веские причины.Реальный ответ: это зависит от ссылки.Она может быть представлен как обычный указатель, а может и не существовать вообще.

Вообщем используя ссылки в параметрах вы не только можете изменять значения, а и используете намного меньше места.Речь идет про объекты, которые занимают много памяти и чтобы их скопировать нужно много ресурсов, хотя зачастую нам совсем не нужно две копии объекта.
Примеры: массивы, большие строки, потоки данных, большие структуры или классы.
Если же мы говорим про дату, которая почти ничего не занимает(например int), разницы вы практически не заметите.


Но что если вам не нужно изменять значение в функции, а требуется сам объект для дальнейших вычисленний и сравнений.Не проще будет использовать константные ссылки?
Про константные ссылки следующий пост.
2
This media is not supported in your browser
VIEW IN TELEGRAM
Нейросеть GeoSpy AI научилась определять точное местонахождение по фотографии изнутри дома, ориентируясь на вид из окна.

Разработчики уверяют, что при этом не используются метаданные фотографии – место определяется только по внешнему виду окружающей среды.
🤯7👍21
Media is too big
VIEW IN TELEGRAM
Telegram теперь сможет написать сообщение вместо вас: этим летом в чатах Telegram появится искусственный интеллект от Илона Маска

▪️Можно будет мгновенно создать свой стикер по текстовому запросу;
▪️Чтобы не читать новые сообщения в чате, можно запросить выдержку .
▪️ШИ сможет написать сообщение вместо вас – нужно только подать идею;
▪️Нейрометь сможет проводить фактчекинг сообщений по каналам;
▪️Прямо в строке поиска можно будет спросить что угодно;
▪️Чат-бот Grok будет закреплен у всех пользователей по умолчанию.

Компания xAI договорилась о партнерстве на 1 год, заявил Дуров. Телеграмм получит от xAI $300 млн, а также 50% дохода от подписок xAI, реализуемых через мессенджер.
3🥱1