istream运算符

时间:2008-10-13 16:39:44

标签: c++

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

我应该如何声明istream运算符来模拟将短信发送到另一部手机(对象)?

2 个答案:

答案 0 :(得分:7)

这是如何定义>>操作者:

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

我已将返回类型设置为void,因为我不确定链接是否有意义。

但是它被认为是糟糕的设计(在C ++世界中)使运算符重载以执行随机任务,因为它使代码难以阅读。流媒体运营商>>和<<有一个非常明确的含义,但发送消息看起来不像流媒体,我希望以这种方式使用运算符。我希望在流的目标端解组对象会产生一个非常类似于源端放置的对象。

做这样的事情要容易得多。

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

答案 1 :(得分:3)

std::istream是一个类,而不是运算符。 <<<和>>可以为任何两种类型定义运算符:

class A;
class B;

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