Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34

Что такое && после имени функции?

08.05.2022, 10:36. Показов 3609. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Наткнулся на такой код:

C++
1
2
3
4
5
6
class S
{
public:
    int mf1();
    void mf2() volatile, mf3() &&;
}
Возникла пара вопросов:
1. Что такое && после имени функции?
2. Почему 2 функции указаны через запятую?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2022, 10:36
Ответы с готовыми решениями:

Что это такое **&?
Здравствуйте! как загуглить,

Язык C, напечатать таблицу истинности логической функции (A & B & C), где & - знаки логический операций И, НЕ
напечатать таблицу истинности логической функции (A & B & C), где & - знаки логический операций И, НЕ

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;)
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A ...

8
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
08.05.2022, 11:24
Цитата Сообщение от ahx666 Посмотреть сообщение
Почему 2 функции указаны через запятую?
Объявление функции - это такое же объявление, как и любое другое. Никто вам не запрещает в одном объявлении объявлять сразу несколько функций (с одинаковым возвращаемым типом) через запятую, что в С, что в С++, так же как можно объявить несколько однотипных переменных через запятую. На функции-члены это тоже распространяется. Но обычно так не делают, поэтому для неподготовленного читателя это выглядит неожиданно.

C++
1
2
3
4
5
6
7
int a, b[20], c(), d(int), *e;
// Эквивалентно
// int a;
// int b[20];
// int c();
// int d(int);
// int *e;
Определения функций, однако, совсем другая тема: определения функций, в отличие от определений переменных, скопом через запятую делать не разрешается.

Цитата Сообщение от ahx666 Посмотреть сообщение
Что такое && после имени функции?
Это довольно нишевая фича. Что такое rvalue reference вы представляете?
1
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,871
08.05.2022, 11:56
https://docs.microsoft.com/en-... w=msvc-170

Добавлено через 39 секунд
Ни чего не понял... ну и ладно.
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34
08.05.2022, 12:10  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое rvalue reference вы представляете?
Ссылки знаю, с rvalue немного знаком. Двойные ссылки тоже немного знаю.
Интересует конкретно:
1. что означает ссылка поле имени функции?
2. как тогда использовать mf3?
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
08.05.2022, 12:22
Лучший ответ Сообщение было отмечено ahx666 как решение

Решение

Цитата Сообщение от ahx666 Посмотреть сообщение
что означает ссылка поле имени функции?
Означает в вашем случае, что функцию можно вызвать только для rvalue.
C++
1
2
3
4
5
6
S{}.mf3(); // можно
 
S a;
a.mf3(); // нельзя
 
std::move(a).mf3(); // можно
Это так называемый ref-квалификатор.
1
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34
08.05.2022, 12:23  [ТС]
Цитата Сообщение от Наталья8 Посмотреть сообщение
Ни чего не понял... ну и ладно.
Перефразирую - после заголовка функции mf3 стоит ссылка. Непонятно зачем она там нужна и как ей пользоваться.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
08.05.2022, 12:40
Лучший ответ Сообщение было отмечено ahx666 как решение

Решение

Цитата Сообщение от ahx666 Посмотреть сообщение
как ей пользоваться.
Это выразительное средство языка, позволяющее определить контекст для вызова определенных методов, которые имеют смысл только для rvalue (&&) или только lvalue (&). При правильном применении позволит повысить безопасность кода, засчет более строгого контроля компилятора. В общем-то это логическое продолжение const-volatile-квалификаторов, цель которых в том же - сузить контекст, в котором возможен вызов.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
08.05.2022, 12:58
Цитата Сообщение от DrOffset Посмотреть сообщение
S{}.mf3(); // можно
в данном контексте выражение S{} дает xvalue?
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
08.05.2022, 13:05
Цитата Сообщение от _stanislav Посмотреть сообщение
в данном контексте выражение S{} дает xvalue?
Да.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2022, 13:05
Помогаю со студенческими работами здесь

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка?
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Что такое &arr + i
В общем пробую тут С++ изучить! С массивами и указателями играюсь, пытаюсь понять что к чему int main() { сonst int size = 10; ...

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp; outs, const Rational&amp;); - invalid function declaration. ...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9&
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура...

Порядок вычисления: операторы «|» и «||», «&» и «&&»
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга порядком вычеслений, а в C++ так же как и в Java или...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru