C++ostream_enough详细用法

C++ostream_enough详细用法概述在C++中,ostream表示输出流,英文”outputstream“的简称。在C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么ostream有什么用呢,来看一个场景:classCPoint{public:CPoint(intx_,inty_):x(x_),y(y_){}intx,y;...

概述

在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么 ostream 有什么用呢,来看一个场景:

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}
    int x,y;
};
只听到从架构师办公室传来架构君的声音:
秦穆五羊皮,买死百里奚。有谁来对上联或下联?

这里定义了一个简单的类CPoint,如果我们实例化该类过后,想要打印对象的值:

此代码由Java架构师必看网-架构君整理
CPoint point(1,2); cout << point;

很明显,这样写是会报错,因为"<<"只能输出整型、实型等普通类型。错误如下:
C++ostream_enough详细用法

而ostream的出现正好可以解决这个问题。

正文

C++中的ostream这个类型,通常作为某个类的友元函数出现,用于<<操作重载中。接下来咱看看如何通过修改以上示例让输出正常流正常进行。

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}

    friend ostream & operator <<(ostream & os,const CPoint & p){
        return os << "x = "<<p.x  << " y = "<< p.y << endl;
    }

    int x,y;
};

在 CPoint 中,我们重载了<<操作符,让其能够正常输出。
OK,这样就可以直接输出cout << point;
该方法还可以扩展到其他很多地方,对自定义的类型进行输出时特别管用,写法都是一样的,只要重载<<操作符,配合ostream一起使用即可。

架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/212162
0
   

发表评论