ошибочки: у ссылки можно взять адрес и он будет соответствовать адресу объекта на который она ссылается, 25:52 void foo(int&& x) { ... }; void bar(BigObject&& o) { ... } не уневерсальная ссылка, а ссылка на rvalue
9:19 - ключевое слово inline сообщаяет компилятору о том, что тело функции может быть определено в нескольких единицах трансляции (по умолчанию несколько определённых функций вызывают ошибку линковки), при этом программист гаратнирует, что тела этих функций будут одинаковыми (например, если функция написана в заголовочном файле). И этот факт, в свою очередь, позволяет компилятору в любой единице трансляции видеть тело функции и встраивать её по своему усмотрению. Когда функция просто объявлена, но не определена, компилятор вынужден полагаться на линковщик. Правда, в современных линковщиках есть флаг "whole program optimization", который включен по умолчанию в релизной компиляции и каким-то образом умудряется встраивать функции.
&ref это не адрес ссылки, а адрес, который она хранит. Поскольку ссылка автоматически разыминовывается в отличии указателя, то доступ получают так. Можете вывести &ref вначале и вконце, они одинаковые будут. А вот значение а изменится, поскольку в предпоследней строке вы по адресу, который хранит ссылка записываете новое значение ref = &b у вас бы не скомпилилось
@@Trak898 , по ходу, тут происходит автоматическое разыменование ссылки (ref), поскольку ссылки разыменовываются автоматом, лектор упоминал об этом....
13:50 с видео понятно, что имеется в виду, но все же ref = b; не является ошибкой, a станет равно b
ошибочки:
у ссылки можно взять адрес и он будет соответствовать адресу объекта на который она ссылается, 25:52 void foo(int&& x) { ... }; void bar(BigObject&& o) { ... } не уневерсальная ссылка, а ссылка на rvalue
Спасибо!
1:03:53 - правильно: от -128 до 127
Правильно: зависит от реализации.
@@АлександрБурлакин-ь5п
до C++20: зависит от реализации
начиная с C++20: от -128 до 127
9:19 - ключевое слово inline сообщаяет компилятору о том, что тело функции может быть определено в нескольких единицах трансляции (по умолчанию несколько определённых функций вызывают ошибку линковки), при этом программист гаратнирует, что тела этих функций будут одинаковыми (например, если функция написана в заголовочном файле). И этот факт, в свою очередь, позволяет компилятору в любой единице трансляции видеть тело функции и встраивать её по своему усмотрению. Когда функция просто объявлена, но не определена, компилятор вынужден полагаться на линковщик. Правда, в современных линковщиках есть флаг "whole program optimization", который включен по умолчанию в релизной компиляции и каким-то образом умудряется встраивать функции.
Про ссылки два вопроса:
int a = 1;
int b = 2;
int &ref = a;
int *c = &ref;
cout
&ref это не адрес ссылки, а адрес, который она хранит. Поскольку ссылка автоматически разыминовывается в отличии указателя, то доступ получают так. Можете вывести &ref вначале и вконце, они одинаковые будут. А вот значение а изменится, поскольку в предпоследней строке вы по адресу, который хранит ссылка записываете новое значение ref = &b у вас бы не скомпилилось
@@Trak898 , по ходу, тут происходит автоматическое разыменование ссылки (ref), поскольку ссылки разыменовываются автоматом, лектор упоминал об этом....
22:30 - косяк. Непонятно: константная ссылка или int ?
25:18
#include
int global;
int& func() {
return global;
}
int main() {
int& ref_var = func();
int* ptr_var = &ref_var;
std::cout