This is important for two reasons: 1. A compiler might warn about a class that has a virtual member function but no virtual destructor. We don't want to treat the feature as incomplete in this case. 2. MSVC10 supports the override identifier except on destructors. In this case, the feature really is incomplete and we want to detect it as such.
23 lines
258 B
C++
23 lines
258 B
C++
struct Foo
|
|
{
|
|
virtual ~Foo() {}
|
|
virtual int test() const = 0;
|
|
};
|
|
|
|
struct Bar : Foo
|
|
{
|
|
~Bar() override {}
|
|
int test() const override { return 0; }
|
|
};
|
|
|
|
int test(Foo const& foo)
|
|
{
|
|
return foo.test();
|
|
}
|
|
|
|
int main()
|
|
{
|
|
Bar const bar;
|
|
return test(bar);
|
|
}
|