Как функции l-значения работают в c ++?

0

Как работают ссылочные типы, когда они используются как l-значения? Я имею в виду, каков порядок, в котором все делается в такой функции, чтобы возвращаемая переменная получала новое значение и как она отличается от того, что происходит в нормальной функции r-значения?

Например, в следующем фрагменте кода,

double& matrix::operator()(int i, int j) const //parenthesis operator
{
  if (!validdex(*this,i,j)) throw(-23); //index out of bounds
  return mat[(i-1)*ncols+(j-1)]; //A(i,j)=mat[(i-1)*ncols+(j-1)]
}

который используется для переполнения круглых скобок для экземпляров класса с именем matrix (validdex chacks, если k является допустимым индексом для матрицы), мне нужно знать, как способ обработки функции (оператор paranthesis в этом случае) различается, когда он используется как r-значение (для получения mat[(i-1)*ncols+(j-1)]), когда он используется как l-значение (чтобы установить значение mat[(i-1)*ncols+(j-1)]).

Извините, если вопрос нечеткий или это звучит слишком основательно. Я попытался найти ответ в Интернете, но я не нашел ничего, кроме некоторых очень простых уроков по функциям l-value, только с обратной линией и ничем иным.

  • 2
    Можете ли вы привести примеры кода, на чем именно вы застряли? Что для вас функция l-значения?
  • 0
    @GManNickG Мне сложно понять, как работают функции ссылочного типа. Под функцией l-значения я подразумеваю функции ссылочного типа, используемые как l-значения.
Показать ещё 4 комментария
Теги:
function
lvalue

1 ответ

1
Лучший ответ

Когда функция возвращает ссылку, вы можете думать об этом, как если бы функция возвращала указатель. Функции, возвращающие ссылки, не взаимодействуют каким-либо особым образом с вызывающим кодом. Такое специальное взаимодействие не обязательно использовать выражение вызова функции как lvalue: функция возвращает свой указатель, а затем делает это; Вызывающий код просто использует значение указателя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню