В чем разница у этих двух функций?
Первая:
int &Time:։badSetHour( int hh )
{
hour = ( hh >= 0 && hh < 24 ) ? hh : 0;
return hour;
}
Вторая:
int Time:։ibadSetHour( int hh )
{
hour = ( hh >= 0 && hh < 24 ) ? hh : 0;
return &hour;
}
struct Time
{
int hour;
int setHour(int h) { hour = (0 <= h && h < 24) ? h : 0; return hour; }
int& setHourRef(int h) { hour = (0 <= h && h < 24) ? h : 0; return hour; }
}
Видимо, имеется в виду что-то вроде этого. Разница в том, что первая функция возвращает копию члена hour
, вторая - ссылку на него (lvalue
) и можно использовать как Time t; t.setHourRef(1) = 2;
(код вполне бессмысленный, но валидный)
Как уже отмечено в комментариях, важно различать модификатор типа &
:
int& foo(...); // функция возвращает ссылку на целое
void bar(int& value); // функция с аргументом типа ссылка на целое
и оператор взятия адреса &
:
int a = 0; double b = 42.0;
int* pointerInt = &a; // сохраняем адрес переменной а в указатель
double* pointerDouble = &b; // адрес переменной b -в указатель double*
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Использую карусель Slick в одном из проектовПоставил в неё пять слайдов — четыре картинки и видео
Здравствуйте! Есть переделанный из этого онлайн-примера скрипт, настроенный для поиска по локальным изображениям, где нерешенными остались...