什么是“别名”流缓冲区?

3
“别名流缓冲区”是什么?我在我的回答的评论中遇到了这个术语。
3个回答

3
我以前没有听过这个术语,但在你引用的帖子中,使用它的人也举了一个例子:使用相同streambuf的两个流。
当然,仅因为两个流不使用相同的streambuf,并不意味着写入它们的数据最终不会进入同一位置;如果这就是所说的话,它们不会别名相同的汇聚处。存在过滤streambuf,它将实际的沉没和来源转发到另一个streambuf,并且在大多数系统上,可以在系统级别打开文件,并将streambuf(或两个)连接到它。
-- James Kanze

+1 是因为我使用了“别名(aliasing)”这个术语,因为它类似于指针别名的概念。 - sehe

1

在那个评论中可能意思是这样的:

ofstream file;
file.rdbuf(cout.rdbuf());

// writes to cout
file << "hello";

所以现在那里的检查无法工作:

if(&file == &cout)
    // no, it doesn't

1

它意味着一个具有不同名称的对象,例如这个:

ostream &lbw = cout;

lbw << "Shahid out" << "Sachin in" << endl; //goes to cout!

这只是一个引用的不同名称吗? - Naveen
使标准输出 (stdout) 实现抗锯齿。 - stefan
@Naveen:我有遗漏什么吗?如果我错了,请纠正我。 :-) - Nawaz
@Nawaz:我不知道答案,我原本预计会更加复杂一些 :) 我很惊讶看到这个。 - Naveen
@Naveen:哦...在C++中,你可以有一个非常非常长的命名空间的短别名,但是当涉及到对象时,它是一个有时被称为别名的引用! - Nawaz
@Naveen,@Nawaz:我指的是像其他人所解释的那样共享rdbuf。引用只是引用。指针只是指针。当它们引用(部分)相同的内存位置时,通常称指针或引用为别名,在相同的上下文中可能会对这些引用的身份和唯一性做出假设(否则,它只是另一个具有相同值的变量)。 - sehe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接