перегрузить



Автор Mr.x xxx задал вопрос в разделе Другие языки и технологии

как в С++ В ООП перегрузить с помощью дружественных функций && и ||? и получил лучший ответ

Ответ от ?????? Зелёный змий ??????[гуру]
Так же как и все остальные.
class foo
{
friend foo operator &&(const foo& a, const foo& b);
friend foo operator ||(const foo& a, const foo& b);
};
foo operator &&(const foo& a, const foo& b)
{
foo r;
// TODO
return r;
}
foo operator ||(const foo& a, const foo& b)
{
foo r;
// TODO
return r;
}

Ответ от Glueon glueon[гуру]
Юрий Павлович абсолютно прав. Вопрос стоял как как перегрузить операторы.
не перегруженный оператор выглядит так
bool operator &&(bool a, bool b);
bool заменили на foo, получили перегруженный оператор. Все достаточно тривиально.
А вот зачем это нужно, где и как будет использоваться перегруженный оператор, какой тип оператор должен возвращать - об это ни слова, и осталось где то за кадром, скорее всего в башке какого то "умного" препода.
А то что перегружать операторы && И || не рекомендуется, с этим совершенно согласен. И очень трудно придумать задачу (реальную, а не какую то преподавательскую фикцию) , в которой может возникнуть потребность перегружать логические операторы. В классе Юрия Павловича проще определить operator bool() для логичеческих операторов, не перегружая самих логических операторов.

Ответ от Daniel Gulchuck[активный]
Насколько я помню, логические операторы не перегружаемы в цпп.

Ответ от Excelsior[гуру]
Оба ответа выше НЕПРАВИЛЬНЫ. Первый неправилен потому, что операторы && и || должны возвращать булевское значение, а не какой-то там объект типа foo. Второй ответ неправилен потому, что операторы && и ||, в принципе, перегрузить можно.
Правильный ответ такой: операторы && и || перегрузить МОЖНО, но делать это КРАЙНЕ НЕ РЕКОМЕНДУЕТСЯ. Сам по себе перегрузочный код несложен, например, такой, как у Юрия Павловича, с той только разницей, что операторы должны возвращать bool, а не foo. Но не всё, что в С++ сделать МОЖНО, является хорошей идеей. Эта - плохая. Стандартные операторы && и || в С++ снабжены семантикой сокращенного вычисления. А именно, если вычисление левого аргумента у оператора && даёт false, то правый аргумент вообще не вычисляется, потому что общий результат все равно будет false. Точно так же, если вычисление левого аргумента у оператора || даёт true, то правый аргумент вообще не вычисляется, потому что общий результат все равно будет true. Cохранить эту семантику при перегрузке операторов && и || НЕВОЗМОЖНО: при применении перегруженных операторов всегда будут вычисляться ОБА аргумента. Поэтому известный C++ FAQ Маршалла Клайна настоятельно не рекомендует перегружать операторы && и ||.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: как в С++ В ООП перегрузить с помощью дружественных функций && и ||?
спросили в Музыка
по гитарам. как настроить перегруз на комбике cruzer cr 15g?
если он там есть (лень искать описание) , то переключателем выбирается канал (клин\\перегруз) , и
подробнее...
спросили в Пассажиры Пассажир
Какой штраф за перегруз легкового автомобиля, пассажирами?
Это называется не перегруз а превышение пассажировместимости. КоАП, ст. 12.23, часть 1 - 500
подробнее...

Багаж ( перегруз) сколько за это доплачивать
На сайт авиакомпании зайдите. Там есть цены за
подробнее...

В чем причина эмоциональлного перегруза?
Эмоциональный перегруз случается при очень личном пропускании через себя всех происходящих вокруг
подробнее...
спросили в 8 год
Перегруз стиральной машины
стирай смело, только без отжима.... на отжиме можно повредить амортизаторы... а так ни че ей не
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Музыка
Что такое эффект перегруза на электрогитаре?
Русское народное, частушечное.

Ухвачу я гитариста
За живой гитарный гриф
Нефиг
подробнее...

сколько стоит1кг перегруза в аэропорту домодедово. сегодня улетаю 55 кг всего а денег не знаю сколько взять
перегруз оплачивается не аэропорту, а авиакомпании
на сайте авиакомпании всё расписано про
подробнее...
спросили в Музыка Звук
Имеется комбик Fender Mustang I, который на перегрузе выдает довольно стремный звук. Можно ли к нему взять педаль чтоб
Вообще есть вариант, который наиболее универсален, недорог, и действенен:

- если есть
подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*