gpt4 book ai didi

c++ - 为什么我们不能创建自己的 ostream 对象

转载 作者:可可西里 更新时间:2023-11-01 16:40:02 27 4
gpt4 key购买 nike

如果 cout 是 ostream 类的一个对象,那么为什么我们不能声明我们自己的对象,比如说,来自同一个类的“out”。即,下面的代码不应该工作吗??

#include<iostream>
using namespace std;
int main()
{
ostream out;
out<<"something";
}

否则

#include<iostream>
using namespace std;
int main()
{
ostream_withassign out;
out<<"something";
}

最佳答案

流对象需要一个缓冲区来将数据发送到外部设备。标准输出流对象 std::cout 使用缓冲区进行初始化,该缓冲区将传输封装到输出出现的任何地方。这是一个人为的例子:

std::ostream cout(/* buffer */);

要创建自己的流对象来伪装成标准流对象,您只需将 std::cout 的缓冲区传递给它的构造函数即可。请注意,我不建议在实践中这样做:

std::ostream copy(std::cout.rdbuf()); // Note: not a *real* copy

copy << "Hello World";

关于c++ - 为什么我们不能创建自己的 ostream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071760/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com