是否可以在不从 ifstream 派生子 class 的情况下覆盖 ifstream::read、ifstream::open 方法?如果可能怎么办?

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);

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

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

为了做你想做的事,你需要从 std::basic_streambuf 派生一个新的 class 并实现你想要的功能(或缺少),然后将那个类的实例提供给 std::ifstream(或者更好,直接 std::istream)通过它的 rdbuf() 方法。