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

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

19.11.2015, 17:23. Показов 11331. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru