0

这是统计和实施:

统计: 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); }

4

1 回答 1

0

基类中的 Delete 可能不完整。但是,该实现提供了基类可以做的所有事情。因此派生类应该调用 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;
}
于 2013-08-15T11:08:39.750 回答