#include <iostream>
#include <sstream>
using namespace std;
class CTest
{
public :
~CTest()
{
cout << "Clear : " << m_ss.str() << ", size = " << m_ss.str().size() << endl;
}
stringstream & Stream()
{
return m_ss;
}
stringstream m_ss;
};
int main()
{
CTest().Stream() << "hello world !" << endl;
cout << "===========================================" << endl;
CTest().m_ss << "hello world !" << endl;
return 0;
#include <sstream>
using namespace std;
class CTest
{
public :
~CTest()
{
cout << "Clear : " << m_ss.str() << ", size = " << m_ss.str().size() << endl;
}
stringstream & Stream()
{
return m_ss;
}
stringstream m_ss;
};
int main()
{
CTest().Stream() << "hello world !" << endl;
cout << "===========================================" << endl;
CTest().m_ss << "hello world !" << endl;
return 0;
}
通过代码可以看出来,主函数中第一行调用,是利用Stream接口来返回字符串流成员m_ss;而主函数中的第二次调用,是直接调用字符串流成员m_ss。
表面上看没有什么区别,甚至有人认为第一次调用是多此一举,何必多写一个接口?
但是事实上区别是非常大的,第一种才是正确的调用方式,第二次调用是有非常大的风险的,运行结果如下:
当然,在使用C++11的标准来编译的时候,两种写法都没有问题。