Im currently anwsering exercise questions concerning opera开发者_高级运维tor overloading in C++. I have a question:
Create a simple class containing an int and overload the operator+ as a member function. Also provide a print( ) member function that takes an ostream& as an argument and prints to that ostream&. Test your class to show that it works correctly.
I can create the class and write the operator+ function alright but I really dont understand the second part of the question. So far in my study of c++ I havent really come across ostream's and as such am not sure if its possible to explicitly create such a stream. I have tried using:
std::ostream o;
However this produces an error. Could someone please enlighten me on how I should create this function please?
So far in my study of c++ I havent really come across ostream's and as such am not sure if its possible to explicitly create such a stream. I have tried using: std::ostream o;
You must have missed something, because ostreams are important. std::cout is a variable of type std::ostream by the way. Usage is more or less like this
#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;
}
You don't create an ostream, you create an ostream reference, like your exercise question said. And you do it in the parameter list of your print function, i.e.
void print(std::ostream & os);
Then you can call that function, passing cout or any other object of a class derived from ostream(ofstream, ostringstream, etc...)
精彩评论