【发布时间】:2016-03-02 12:40:44
【问题描述】:
在 C++98 之前,在 C++ I/O 类层次结构中,有 3 个名为 iostream_withassign, ostream_withassign 和 istream_withassign 的类。
iostream_withassign类的成员函数:
构造函数和析构函数
~iostream_withassign
public:virtual ~iostream_withassign()
iostream_withassign
public:iostream_withassign()
创建一个 iostream_withassign 对象。它不对该对象进行任何初始化。
操作员 =
public:iostream_withassign& operator =(iostream_withassign& rhs)
赋值运算符 运算符 =
重载 1
public:iostream_withassign& operator =(streambuf*)
此赋值运算符采用指向 streambuf 对象的指针并将此 streambuf 对象与赋值运算符左侧的 iostream_withassign 对象相关联。
重载 2
public:iostream_withassign& operator =(ios&)
此赋值运算符采用对 ios 对象的左值引用,并将附加到此 ios 对象的流缓冲区与赋值运算符左侧的 iostream_withassign 对象相关联。
来源:this。
this 也是这么说的:
ostream_withassign 类是允许对象分配的 ostream 的变体。预定义对象 cout、cerr 和 clog 是此类的对象,因此可以在运行时重新分配给不同的 ostream 对象。例如,一个通常将输出发送到标准输出的程序可以被临时指示将其输出发送到磁盘文件。它还包含构造函数、析构函数和 =(赋值)运算符函数。
我不明白,为什么这些类存在?这三个类有什么用吗?为什么后来这 3 个类从 C++98 标准中删除了?是什么原因?
参见 C++ 流类层次结构。它没有这 3 个类。
【问题讨论】:
-
您要解决什么问题?标准 iostream 类确实具有更改底层缓冲区的机制。使用这些有什么问题?
-
@KerrekSB:然后描述一下那个机制?它们是什么?
-
@KerrekSB:但仍然没有得到 _withassign 类有什么问题的答案?
标签: c++ iostream language-history