Как справочная функция "int & foo ();" Работа? - PullRequest
0 голосов
/ 17 мая 2018

Я не совсем уверен, что вы называете это «ссылочной функцией», но мой учитель показал нам код, который объявил функцию, подобную ссылочной переменной, и я не понимаю ее логики.

#include <iostream>
using namespace std;

int &max(int &x, int &y)
{
    if(x > y)
        return x;
    return y;
}

int main()
{
    int x, y;
    cout << "Enter 2 #s";
    cin >> x >> y;

    y = 3;
    max(x, y) = 1000;

    cout << endl;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
    cout << max(x, y) << endl; 

    max(x, y) = 1000;
    x = 5;

    cout << endl;
    cout << "X: " << x << endl;
    cout << "Y: " << y << endl;
    cout << max(x, y) << endl; 
}

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Я считаю, что номенклатура означает, что функция должна возвращать ссылку на целое число.Как именно это сделать, я действительно не знаю.Я не привык видеть функцию, объявленную таким образом, и, вероятно, я бы вообще изменил объявление.

0 голосов
/ 17 мая 2018

Это не ссылочная функция, скорее она возвращает ссылку на x или y в выражениях

return x;

и

return y;

Может быть, вам станет понятнее, если заметить, что определение, которое вы дали в вопросе, эквивалентно следующему выражению, где & пишется рядом с int, а не с max.

int& max(int &x, int &y)
{
    if(x > y)
        return x;
    return y;
}
0 голосов
/ 17 мая 2018

Это не справочная функция, но возвращаемое значение функции является справочной. Вы можете прочитать функцию так: int& max(int &x, int &y). Вот больше информации: https://www.tutorialspoint.com/cplusplus/returning_values_by_reference.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...