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

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

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

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

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

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

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

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

5
Модератор
Эксперт С++
13680 / 10889 / 6466
Регистрация: 18.12.2011
Сообщений: 29,058
28.09.2017, 16:04 2
Польза тут только в том, что 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
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
29.09.2017, 20:05  [ТС] 3
Подскажите, пожалуйста, идею для хитрого и полезного использования последовательного оператора присвоения.
Имею ввиду любой случай на языке C или C++ с использованием стандартных типов или с использованием объектов, что бы было полезно сделать следующее
C
1
(i = j) = k;
. То есть, что бы это было выгодно по скорости или удобству написания кода и при этом изобретательно. И что бы выражение имело в точности такой вид.

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

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

Начиная с С++11 правила sequencing в языке были изменены, побочным эффектом чего явилось то, что начиная с С++11 такой код уже не порождает неопределенного поведения. Но какой-то "полезностью" от этого данное выражение не наделилось.
1
30.09.2017, 04:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2017, 04:09
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru