【问题标题】:is it possible to override ifstream::read, ifstream::open methods without deriving child class from ifstream ?? if possible how?是否可以在不从 ifstream 派生子类的情况下覆盖 ifstream::read、ifstream::open 方法?如果可能怎么办?
【发布时间】:2019-05-18 11:03:21
【问题描述】:
std::ifstream in;
in.**open**("file path",std::ifstream::in );
in.**read**((char *)&array[0],size);

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

【问题讨论】:

    标签: c++ std ifstream istream


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多