繁体   English   中英

是否可以覆盖ifstream :: read,ifstream :: open方法而无需从ifstream派生子类? 如果可能的话如何?

[英]is it possible to override ifstream::read, ifstream::open methods without deriving child class from ifstream ?? if possible how?

std::ifstream in;
in.**open**("file path",std::ifstream::in );
in.**read**((char *)&array[0],size);

我想覆盖打开和读取,以便它不会执行任何文件操作,并且我可以编写自己的打开和读取功能。

您不能在没有派生新类的情况下覆盖方法。 而且,您只能覆盖虚拟方法。 但是std::ifstream::open()std::ifstream::read()不是虚拟的。

要执行所需的操作,您需要从std::basic_streambuf派生一个新类,并实现所需的功能(或缺少该功能),然后将该类的实例提供给std::ifstream (或者更好的是std::istream直接)通过其rdbuf()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM