是否可以在不从 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()
方法。
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()
方法。