Оператор istream

int main()
{
    HandPhone A,B;
    A>>B;//overloading operator>> to simulate sending sms to another handphone(object)
    return 0;
}

Как мне объявить оператор istream для имитации отправки sms на другой мобильный телефон (объект)?

@ ukhti - форматирование сделает этот вопрос немного легче для чтения и, возможно, ответа. :-)

Onorio Catenacci 13.10.2008 20:41

@ ukhti - Вы тоже задаете очень широкий вопрос. Пожалуйста, прочтите FAQ и попытайтесь немного сузить фокус вашего вопроса.

Onorio Catenacci 13.10.2008 20:42

Разве синтаксис типа: B << "Message" << A не был бы более читабельным? В предложенном вами синтаксисе у вас нет понятия сообщения. Хотя я должен сказать, что вместо того, чтобы сразу перегружать оператор, вам следует реализовать общедоступную функцию, например: message (char * message, const HandPhone & from);

paxos1977 14.10.2008 01:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
623
2

Ответы 2

std :: istream - это класс, а не оператор. Операторы << и >> могут быть определены для любых двух типов:

class A;
class B;

A operator << (A& a, const B& b)    // a << b;  sends b to a.
{
   a.sendMessage(b);
   return a;
}

Вот как определить оператор >>:

void operator >> (HandPhone& a, HandPhone& b)
{
    // Add code here.
}

Я установил возвращаемый тип как void, так как не уверен, что цепочка имеет смысл.

Но считается плохим дизайном (в мире C++) перегрузка операторов для выполнения случайных задач, поскольку это затрудняет чтение кода. Операторы потоковой передачи >> и << имеют очень четко определенное значение, но отправка сообщения не так похожа на потоковую передачу, которую я бы хотел использовать таким образом. Я ожидал, что демаршалинг объекта на конечном конце потока приведет к созданию объекта, очень похожего на то, что было помещено на исходном конце.

Сделать что-то подобное намного проще.

B.sendMessageTo(A,Message("PLOP"));

Другие вопросы по теме