gpt4 book ai didi

C++:原始类型的 iostream operator<< 和 operator>> 是虚拟的吗?

转载 作者:行者123 更新时间:2023-11-27 22:54:20 27 4
gpt4 key购买 nike

由于 ifstreamistringstream 是从 istream 继承的,我希望 istream(或者更确切地说,basic_istream) 将为这样的原始类型声明 operator>>:

virtual istream& istream::operator>>(char &c);
虚拟 istream& istream::operator>>(int &i);

快速浏览一下源代码就会发现情况并非如此——这些函数看起来并不是虚拟的。我错过了什么吗?

[上下文是我正在尝试滚动执行二进制 I/O、纠正字节顺序等的 istream。]

最佳答案

不,它们不是虚拟的。基本流功能中有一些虚函数,但那是在输入/输出实际数据的部分内部,而不是将类型格式化为字符串,这才是 operator>> 中实际发生的事情。

编辑:我相信所有虚拟功能都对公共(public)界面“隐藏”了。 basic_streambuf::pubseekpos 至少在 gcc 提供的 header 中是对虚拟 seekpos 的调用。

关于C++:原始类型的 iostream operator<< 和 operator>> 是虚拟的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34492240/

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