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

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

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

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

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 ...

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

8
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12812 / 6684 / 1800
Регистрация: 18.10.2014
Сообщений: 16,935
08.05.2022, 11:24 2
Цитата Сообщение от 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
467 / 334 / 64
Регистрация: 09.03.2016
Сообщений: 3,295
08.05.2022, 11:56 3
https://docs.microsoft.com/en-... w=msvc-170

Добавлено через 39 секунд
Ни чего не понял... ну и ладно.
0
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 34
08.05.2022, 12:10  [ТС] 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое rvalue reference вы представляете?
Ссылки знаю, с rvalue немного знаком. Двойные ссылки тоже немного знаю.
Интересует конкретно:
1. что означает ссылка поле имени функции?
2. как тогда использовать mf3?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
08.05.2022, 12:22 5
Лучший ответ Сообщение было отмечено 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  [ТС] 6
Цитата Сообщение от Наталья8 Посмотреть сообщение
Ни чего не понял... ну и ладно.
Перефразирую - после заголовка функции mf3 стоит ссылка. Непонятно зачем она там нужна и как ей пользоваться.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
08.05.2022, 12:40 7
Лучший ответ Сообщение было отмечено ahx666 как решение

Решение

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

Что такое &arr + i
В общем пробую тут С++ изучить! С массивами и указателями играюсь, пытаюсь понять что к чему int...

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

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

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

Что значат && и ||
Вроде бы результат кода один и тот же первый код #include &lt;stdio.h&gt; #define MAX_STRING_SIZE 20...

Что означает && и || в C++?
И как это применяется

функции && строки
ребята,пожалуйста,помогите.В понедельник практику сдавать,а эти задачи НЕМОГУ. 1. Написать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru