leveldb 源代码,为什么 db_impl.cc 实现纯虚函数"DB::Delete"

leveldb source code, Why db_impl.cc implement pure virtual function "DB::Delete"

本文关键字:函数 DB Delete 实现 cc 源代码 为什么 db impl leveldb      更新时间:2023-10-16

以下是统计和实现:

统计:virtual Status Delete(const WriteOptions& options, const Slice& key) = 0;

实施: Status DB::Delete(const WriteOptions& opt, const Slice& key) { WriteBatch batch; batch.Delete(key); return Write(opt, &batch); }

基类中的Delete可能不完整。不过,实现提供了基类所能做的一切。因此,派生类应该调用Base::Delete。如果没有适当的文档,程序员可能会错过这一点。

在10.3的标准中:"在类中声明的虚拟函数应被定义,或在该类中声明为纯(10.4),或两者兼有;"

这编译(g++-std=c++11test.cc-o-test)并愉快地运行:

#include <iostream>
struct X { virtual void f() = 0; };
struct Y : X { virtual void f(); };
void X::f () { std::cout << 'X' << std::endl;}
void Y::f () { X::f(); std::cout << 'Y' << std::endl;}
int main() {
    Y y;
    y.f();
    return 0;
}