Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для oobarbazanoo
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835

Нестандартное и полезное применение оператора присвоения

28.09.2017, 15:55. Показов 792. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, когда полезно следующее использование оператора присвоения: (x = y) = w ?
При этом оператор = не перегружен и речь идёт не об объектах, а о стандартных типах. То есть x, y и w - стандартные типы.
Интересует вариант, когда это применяется очень хитро. Имею ввиду, что на первый взгляд мы просто присваиваем игрик иксу и потом присваем дабл ю иксу и от этого никакой пользы. Но, я точно знаю что можно придумать случай очень хитрый, когда такое присваение будет очень выгодным. Только не могу придумать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2017, 15:55
Ответы с готовыми решениями:

Перегрузка оператора присвоения
// radius.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include...

Перегрузка оператора присвоения в enum class
Всем доброго дня. Есть enum: typedef unsigned char byte; enum class MyEnum : byte { A, B, C

Перегрузка конструктора копирования и оператора присвоения
Всем привет, сразу к делу. После прочтения 11 главы Лафоре столкнулся с такой бедой как понятие перегрузка оператора присвоения. Дело в том...

5
Модератор
Эксперт С++
 Аватар для zss
13756 / 10951 / 6487
Регистрация: 18.12.2011
Сообщений: 29,204
28.09.2017, 16:04
Польза тут только в том, что y не меняется
C++ Скопировано
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main() 
{
    int x=1,y=2,c=3,w=4;
    c=((x=y)=w);
    cout<<x<<' '<<y<<' '<<c<<' '<<w<<endl;
    return 0;
}
Вывод
4 2 4 4
1
 Аватар для oobarbazanoo
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
29.09.2017, 20:05  [ТС]
Подскажите, пожалуйста, идею для хитрого и полезного использования последовательного оператора присвоения.
Имею ввиду любой случай на языке C или C++ с использованием стандартных типов или с использованием объектов, что бы было полезно сделать следующее
C Скопировано
1
(i = j) = k;
. То есть, что бы это было выгодно по скорости или удобству написания кода и при этом изобретательно. И что бы выражение имело в точности такой вид.

Меня интересует только идея без реализации. Буду очень благодарен.
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
29.09.2017, 20:10
все хитрое, нестандартное и неоднозначное - зло.
и даже при стандартном поведении операторов такой код - зло.
3
 Аватар для oobarbazanoo
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
30.09.2017, 02:33  [ТС]
DU3, спасибо за информирование. Но, я всё равно хотел бы придумать или увидеть случай, когда его можно использовать.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12875 / 6739 / 1810
Регистрация: 18.10.2014
Сообщений: 17,065
30.09.2017, 04:09
Цитата Сообщение от oobarbazanoo Посмотреть сообщение
когда полезно следующее использование оператора присвоения: (x = y) = w ?
Практически никогда.

В языке С и в оригинальной спецификации языка С++ (C++98) такое выражение порождает неопределенное поведение. То есть в "классическом" С++ такие выражения бесполезны по определению.

Начиная с С++11 правила sequencing в языке были изменены, побочным эффектом чего явилось то, что начиная с С++11 такой код уже не порождает неопределенного поведения. Но какой-то "полезностью" от этого данное выражение не наделилось.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.09.2017, 04:09
Помогаю со студенческими работами здесь

Почему не вызывается ни конструктор копий, ни функция перегруженного оператора присвоения
Привет. Начал изучать C++, дошел до темы перегрузки операторов. И запарился на одном месте. Есть класс Dog: class Dog { public:...

Повторное применение оператора delete
Это нормально так делать? в одном учебнике нашел: Monster* Borg=new Monster; delete Borg; Borg=0; //Теперь повторный вызов...

Применение тернарного оператора. Необходимо определить месяц
Прошу помочь. Я новичок. Не могу разобраться. Задача: По номеру введенным пользователем (от 1 до 12), необходимо вывести на экран...

Оригинальное и полезное применение простанств имён
Кто как рекомендует применять пространства имён (namespace) ?

Есть ли на Лисп аналог оператора присвоения?
Я только начал изучать Лисп и меня заинтересовало 1. Есть ли на Лисп аналог оператора присвоения? 2. Если есть (а скорее всего нет),...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер