C++重载<<或>>示例和说明

  • 本文关键字:说明 重载 C++ c++
  • 更新时间 :
  • 英文 :


我正在学习c++,我不明白如何<<>>操作符重载工作。

谁能提供一个重载操作符的方法的例子和/或解释?

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

解释:你在这里所做的,是为一些类创建friend函数。我们把它变成朋友是因为我们想引用它的私有字段。如果您有struct,则不必将其声明为友元。

我们返回ostream&,这样我们就可以做"链接"——如果你只返回ostream, cout << x << y就不能工作。出于同样的原因,我们引用了os,而且我们想要实际的流(否则你最终会写入一些副本)。我们取元素A,因为它要被打印出来。然后,向os输出我们想要的任何内容——但请记住,你只能输出ostream可以打印的元素(例如:整型、字符串等)。我们打印到os,然后返回它(链接)。记住,调用cout<<x等同于调用operator<<(cout, x)

p。我回答了这个特定的<<运算符重载,因为这是我首先想到的,我想这就是你们所纠结的。您没有明确是要为ostream重载操作符,还是仅为某些类重载操作符,因此您可以将其用作某个函数。

最新更新