本文主要是介绍ostream,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
signal(SIGINT ,SIG_ING);
SIGHUP发送给具有Terminal的ControllingProcess,当terminal被disconnect时候发送SIGPIPE在reader中止之后写Pipe的时候发送
C++运算符重载(11) - 重载<<和>>操作符
运算符 “<<” 用于流输出,而运算符“>>”用于流输出。
在开始重载这些操作符之前,必须注意下面的事项:
1) cout是输出类的对象,而cin是输入类的对象
2) 这些操作符必须重载为全局函数。如果想要让它们可以访问私有成员,则必须定义为友元。
如果操作符重载为一个成员函数,则它必须是对象的成员,且出现在操作符的左侧。
运算符‘<<'和 '<<'的调用方式一般为'cout << ob1'和'cin << ob1'. 所以如果将它们做为一个成员函数,并且对象能出现在操作符的右侧,则我们需要将ob1和ob2定义为ostream类和istream类的成员。显然这是不太现实的。因此, 一般将这些操作符重载为接收两个参数的全局函数,其中一个参数为cout, 另一个为自定义类的对象。
下面程序演示了运算符 << 和 >> 的重载。
- #include <iostream>
- using namespace std;
- class Complex
- {
- private:
- int real, imag;
- public:
- Complex(int r = 0, int i =0)
- { real = r; imag = i; }
- friend ostream & operator << (ostream &out, const Complex &c);
- friend istream & operator >> (istream &in, Complex &c);
- };
- ostream & operator << (ostream &out, const Complex &c)
- {
- out << c.real;
- out << "+i" << c.imag << endl;
- return out;
- }
- istream & operator >> (istream &in, Complex &c)
- {
- cout << "Enter Real Part ";
- in >> c.real;
- cout << "Enter Imaginary Part ";
- in >> c.imag;
- return in;
- }
- int main()
- {
- Complex c1;
- cin >> c1;
- cout << "The complex object is ";
- cout << c1;
- return 0;
- }
Enter Real Part 10
Enter Imaginary Part 20
The complex object is 10+i20
ostream是output stream的简称,即输出流。 在C++中用来输出。 一个典型的输出流对象就是在C++中标准输出流cout。 在C++中,很少自定义ostream的对象,更多的是直接使用cout。ostream这个类型,往往出现在<<操作重载中,作为某个类的友元函数出现。 比如对于class A, 可以定义 ostream & operator << (ostream &os, const A& a); 这样在调用A的对象var时, cout << var ; 就等同于调用这个函数了。 函数里面一般会输出A中的一些成员变量。
这篇关于ostream的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!