以下是统计和实施:
统计:
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);
}
答案 0 :(得分:0)
基类中的删除可能不完整。但是,该实现提供了基类可以执行的所有操作。因此派生类应该调用Base :: Delete。没有适当的文档,程序员可能会错过。
在10.3的标准中:“在一个类中声明的虚函数应在该类中定义或声明为纯(10.4),或两者兼有;”
编译(g ++ -std = c ++ 11 test.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;
}