C ++重载<<或>>例子和解释

时间:2015-06-04 17:25:44

标签: c++

我正在学习c ++而我不明白<<和>>运算符重载工作。

有人可以提供一个重载任何一个运算符的方法的示例和/或解释吗?

1 个答案:

答案 0 :(得分:1)

class A
{
    int x;
    public:
    A(int _x) : x(_x){}
    friend ostream& operator<<(ostream& os, A elem);
};

ostream& operator<<(ostream& os, A elem)
{
    os << elem.x;
    return os;
}

然后你可以打电话

std::cout << A(5); //prints 5

说明:你在这里做的是为某个班级做朋友的功能。我们要把它变成朋友,因为我们想要引用它的私人领域。如果您有结构,则不必将其声明为朋友。

我们正在返回ostream&,以便我们可以进行&#34;链接&#34; - 如果您仅返回cout << x << yostream将无效。 我们出于同样的原因参考了操作系统,而且我们想要实际的流(否则你最终会写入一些副本)。我们正在接受elem A,因为它将被打印出来。然后,我们打印到任何我们想要的东西 - 但请记住,你只能打印ostream可以打印的元素(例如,整数,字符串等)。我们打印到os,然后我们返回它(链接)。 请注意,调用cout<<x等同于调用operator<<(cout, x)

PS。我回答了这个具体的&lt;&lt;操作员超载,因为这首先出现在我脑海中,我认为这就是你正在努力的事情。您没有明确是否要为ostream重载运算符,或者仅为某些类重载运算符,因此您可以将其用作某些函数。