我目前正在讨论有关C ++中运算符重载的问题。我有一个问题:
创建一个包含int的简单类,并将operator +作为成员函数重载。还提供了一个print()成员函数,它具有一个ostream和amp;作为一个论点并打印到那个ostream&amp ;.测试你的课程,以证明它是否正常工作。
我可以创建类并编写运算符+函数,但我真的不明白问题的第二部分。到目前为止,在我对c ++的研究中,我并没有真正遇到过ostream,因此我不确定是否有可能明确地创建这样的流。我尝试过使用:
std :: ostream o;
然而,这会产生错误。有人可以请教我如何创建这个功能吗?
答案 0 :(得分:9)
到目前为止,在我对c ++的研究中,我并没有真正遇到过ostream和as 这样我不确定它是否可以明确地创建这样的流。一世 尝试过使用:std :: ostream o;
你一定错过了什么,因为ostream很重要。顺便说一句,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;
}
答案 1 :(得分:4)
你没有创建一个ostream,你创建一个ostream引用,就像你的运动问题所说的那样。你可以在打印功能的参数列表中进行,即
void print(std::ostream & os);
然后你可以调用该函数,传递cout或从ostream派生的类的任何其他对象(ofstream,ostringstream等等)