test

相信不少C++程序员初次看到下面的写法时,一定留下了深刻印象:

#include<iostream>
using namespace std;

int main() {

cout << "Hello World!" << endl;
}
至少,对于当时从C语言转向学习C++的我是深感震惊,如此形象直观的输出方式,简直是黑科技。

那么如何在自定义类上来仿照ostream的这种输出特性呢?

直接上代码:

CMyStream.h:

class CMyStream
{
public:
typedef void (CMyStream::*PFunc)();
CMyStream& operator<<(PFunc pFunc);

template<typename T>
CMyStream& operator<<(T Val)
{
std::stringstream ss;
ss<<Val;
m_str+=ss.str();
return *this;
}

void MyEndl();

private:
std::string m_str;
}

extern CMyStream::PFunc Endl;
CMyStream.cpp:

CMyStream::PFunc Endl = &CMyStream::Endl;

CMyStream& operator<<(PFunc pFunc)
{
(this->*pFunc)();
return *this;
}

void CMyStream::Endl(void)
{
std::cout<<m_str<<std::endl;
m_str = "";
}

————————————————
版权声明:本文为CSDN博主「NXGG」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/norman_irsa/article/details/102990577

上一篇:git(四)问题


下一篇:a16.ansible 生产实战案例 --docker基于镜像仓库安装harbor-https方式 playbook