Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/55: Рейтинг темы: голосов - 55, средняя оценка - 4.71
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170

В чем отличие int &f( ) от int f( )

19.11.2015, 17:23. Показов 10722. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что такое int & и чем отличается от int ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using std::cout;
using std::endl;
 
int some(int i)
{
    return i;
}
 
int &some(char i)
{
    int n = i;
    return n;
}
 
int main()
{
    cout << some(47);
    cout << endl;
 
    cout << some('0');
    cout << endl;
 
    system("pause");
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2015, 17:23
Ответы с готовыми решениями:

Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N
Напишите функцию f(int&amp; m1, int&amp; m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N. Решение. ...

Отличие int от int&
Расскажите пожалуйста в чем отличие int от int&amp;. Заранее спасибо.

в чем разница между void f(int &n) и void f(int &&n)
:help:

34
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
20.11.2015, 14:27
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Tulosba Посмотреть сообщение
Для типа int разницы не будет
C++
1
2
auto var = some(3);
var = 10; // error if const int
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 15:08
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
// error if const int
Уверен?
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.11.2015, 15:24
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
// error if const int
А с чего это вдруг auto подхватит квалификатор const? Оно так не работает.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 15:55
Цитата Сообщение от ct0r Посмотреть сообщение
Оно так не работает.
Именно. Собственно из-за того, что выведение типов для auto работает по той же схеме, что и для вывода типа для шаблонов:
7.1.6.4/7 ... If the placeholder is the auto type-specifier,
the deduced type is determined using the rules for template argument deduction.
А в шаблонах const/volatile квалификаторы игнорируются для не ссылочных типов:
14.8.2.1/2 If P is not a reference type: (2.3)... If A is a cv-qualified type, the top level cv-qualifiers of A’s type are ignored for type deduction.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
template <class T>
int g(T t) { static int i = 0;
return ++i;
}
 
int main()
{
    int i = 100500;
    std::cout << g(i) << std::endl;
    std::cout << g(42) << std::endl;
}
Вывод:
1
2
Если в одном из случаев явно указать тип, например:
C++
1
std::cout << g<const int>(i) << std::endl;
То уже будут инстанцированы разные функции. Вывод:
1
1
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.11.2015, 16:17
Цитата Сообщение от Tulosba Посмотреть сообщение
Именно. Собственно из-за того, что выведение типов для auto работает по той же схеме, что и для вывода типа для шаблонов
Цитата Сообщение от Tulosba Посмотреть сообщение
А в шаблонах const/volatile квалификаторы игнорируются для не ссылочных типов:
Если отвлечься от auto, то тут дело даже не в нем. Тот же decltype тоже не выдаст ошибку, хотя правила вывода типа у него другие. Причина вот в чем:

3.10/4 class and array prvalues can have cv-qualified types; other prvalues always have cv-unqualified types
5/5 If a prvalue initially has the type “cv T,” where T is a cv-unqualified non-class, non-array type, the type of the expression is adjusted to T prior to any further analysis.
5.2.3/2 if T is a non-class type that is cv-qualified, the cv-qualifiers are discarded when determining the type of the resulting prvalue
5.4/1 if T is a non-class type that is cv-qualified, the cv-qualifiers are discarded when determining the type of the resulting prvalue
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 16:38
ct0r, хочешь сказать, дело в том, что int - не класс?
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.11.2015, 16:47
Цитата Сообщение от Tulosba Посмотреть сообщение
хочешь сказать, дело в том, что int - не класс?
Ну типа того. Ну еще и prvalue.
C++
1
2
3
4
5
6
7
8
9
10
11
12
const int foo(int i) { return i; } // пофиг, const или не const
class Bar {};
// const
Bar bar() { return Bar(); } // не пофиг
 
int main()
{
    decltype(bar()) b1 = bar();
    b1 = bar();
    decltype(foo(0)) f1 = foo(0);
    f1 = foo(1);
}
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
20.11.2015, 16:57
Lensato, была лисица, её клонировали.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 17:20
Цитата Сообщение от ct0r Посмотреть сообщение
Ну типа того.
Твой вариант кода с auto вместо decltype будет работать иначе. Т.е. будет пофигу. Стало быть не в non-class типах дело.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.11.2015, 17:27
Цитата Сообщение от Tulosba Посмотреть сообщение
Твой вариант кода с auto вместо decltype будет работать иначе. Т.е. будет пофигу. Стало быть не в non-class типах дело.
Причем тут auto? Мы смотрим на то, какой точный тип имеет возвращаемое функцией значение. Если это класс или массив - то const в определении функции влияет на возвращаемый тип, если это какой-нибудь int - то не влияет. Все просто.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 17:33
Цитата Сообщение от ct0r Посмотреть сообщение
Причем тут auto?
Так с чего весь сыр-бор начался:
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
auto var = some(3); var = 10; // error if const int
C auto по-барабану, есть const или нет.
http://coliru.stacked-crooked.... acc692d735
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
20.11.2015, 17:40
Цитата Сообщение от Tulosba Посмотреть сообщение
C auto по-барабану, есть const или нет.
Ну дык да, само собой Я про то, что const int сводится к int вообще даже до того, как начинается вникание в auto, decltype или еще че.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 17:59
Цитата Сообщение от ct0r Посмотреть сообщение
const int сводится к int вообще даже до того
Ну, а я про auto И если даже попытку rikimaru2013 модифицировать на использование class, то ничего не получится. Т.е. код будет компилируемый.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
20.11.2015, 18:05
Tulosba, Да всё всё) Хватит меня уже унижать((( Тогда и я сам в сметении: какое применение у возвращении константного объекта по значению?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
struct Foo
{
    void f(){}
};
 
const Foo a()
{
    return Foo();
}
int main()
{
    a().f();
}
Разве что?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.11.2015, 18:17
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Да всё всё) Хватит меня уже унижать
Какое тут унижение, ты что? Просто до истины докапываемся.
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
какое применение у возвращении константного объекта по значению?
Ну да. Самая очевидная - невозможность вызвать не const функцию-член.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2015, 18:17
Помогаю со студенческими работами здесь

Пусть объявлена функция void f(int i,int &j){.}. Параметр j является параметром
1)Пусть объявлена функция void f(int i,int &amp;j){...}. Параметр j является параметром a. по адресу b. по ссылке c. по значению ...

Как передать 0 в функцию типа f (int, int&)
Подскажите, почему при повторных вызовах f остается предыдущее значение S? Т.е. не обнуляется в теле f - {...s=0...} и как его обнулить?...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

в чем разница между int a и int *a?
люди подскажите начинающему... чем переменная отличается от указателя? допустим переменные int a char a ? и переменные int *a, char...

Чем отличается int от signed int?
в 32-разрядной системе, диапазон значений для int и signed int одинаковые - от -2147483648 до 2147483647. Так же для short int и signed...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru