【发布时间】:2019-05-18 11:03:21
【问题描述】:
std::ifstream in;
in.**open**("file path",std::ifstream::in );
in.**read**((char *)&array[0],size);
我想重写打开和读取,这样它就不会执行任何文件操作,我可以编写自己的打开和读取功能。
【问题讨论】:
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() 方法。
【讨论】: