В чем разница типа возвращаемого по значению и по ссылке?

220
19 сентября 2017, 08:32

В чем разница у этих двух функций?

Первая:

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; 
}
Answer 1
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*
READ ALSO
Одно действие по двум событиям в jQuery

Одно действие по двум событиям в jQuery

ajax запрос вызывается по двум действиям:

210
Как на мобильном спрятать слайд из Slick-карусели?

Как на мобильном спрятать слайд из Slick-карусели?

Использую карусель Slick в одном из проектовПоставил в неё пять слайдов — четыре картинки и видео

246
Доработка поискового скрипта

Доработка поискового скрипта

Здравствуйте! Есть переделанный из этого онлайн-примера скрипт, настроенный для поиска по локальным изображениям, где нерешенными остались...

216
запрос в wordpress

запрос в wordpress

как правильно сформировать запрос в wordpress?

153