5

我目前正在回答有关 C++ 中运算符重载的练习问题。我有个问题:

创建一个包含 int 的简单类,并将 operator+ 重载为成员函数。还提供一个 print() 成员函数,它以 ostream& 作为参数并打印到该 ostream&。测试你的类以证明它工作正常。

我可以创建类并编写 operator+ 函数,但我真的不明白问题的第二部分。到目前为止,在我对 c++ 的研究中,我还没有真正遇到过 ostream,因此不确定是否可以显式创建这样的流。我试过使用:

标准::ostream o;

但是,这会产生错误。有人可以请教我应该如何创建这个功能吗?

4

2 回答 2

10

到目前为止,在我对 c++ 的研究中,我还没有真正遇到过 ostream,因此不确定是否可以显式创建这样的流。我试过使用:std::ostream o;

您一定错过了什么,因为 ostreams 很重要。顺便说一下,std::cout 是 std::ostream 类型的变量。用法或多或少是这样的

#include <iostream> //defines "std::ostream", and creates "std::ofstream std::cout"
#include <fstream> //defines "std::ofstream" (a type of std::ostream)
std::ostream& doStuffWithStream(std::ostream &out) { //defines a function
    out << "apples!";
    return out;
}
int main() {
    std::cout << "starting!\n"; 
    doStuffWithStream(std::cout); //uses the function

    std::ofstream fileout("C:/myfile.txt"); //creates a "std::ofstream"
    doStuffWithStream(fileout); //uses the function

    return 0;
}
于 2011-08-24T16:58:49.803 回答
4

您不会创建 ostream,而是创建 ostream 参考,就像您的练习问题所说的那样。你在你的打印功能的参数列表中做到这一点,即

void print(std::ostream & os);

然后您可以调用该函数,传递 cout 或从 ostream(ofstream、ostringstream 等...) 派生的类的任何其他对象

于 2011-08-24T16:53:15.833 回答