#include <windows.h>
#define OVERRIDE override
#define FINAL final
class Base {
public:
virtual ~Base() {}
virtual void F() = 0;
};
class CorrectOverride : public Base {
public:
~CorrectOverride() OVERRIDE {}
void F() OVERRIDE {}
};
class CorrectFinal FINAL : public CorrectOverride {
public:
~CorrectFinal() FINAL {}
void F() FINAL {}
};
class MissingOverride : public Base {
public:
~MissingOverride() {}
void F() {}
};
class VirtualAndOverride : public Base {
public:
virtual ~VirtualAndOverride() OVERRIDE {}
virtual void F() OVERRIDE {}
};
class VirtualAndFinal FINAL : public Base {
public:
virtual ~VirtualAndFinal() FINAL {}
virtual void F() FINAL {}
};
class VirtualAndOverrideFinal FINAL : public Base {
public:
virtual ~VirtualAndOverrideFinal() OVERRIDE FINAL {}
virtual void F() OVERRIDE FINAL {}
};
class OverrideAndFinal FINAL : public Base {
public:
~OverrideAndFinal() OVERRIDE FINAL {}
void F() OVERRIDE FINAL {}
};
class CorrectPureVirtual : public Base {
virtual void F() = 0;
};
class Pure : public Base {
void F() = 0;
};
class PureOverride : public Base {
void F() override = 0;
};
class PureVirtualOverride : public Base {
virtual void F() override = 0;
};
class COMIsAwesome : public Base {
STDMETHOD(F)() override = 0;
};
namespace testing {
class Test {
public:
virtual ~Test();
virtual void SetUp();
};
class NotTest {
public:
virtual ~NotTest();
virtual void SetUp();
};
}
class MyTest : public testing::Test {
public:
virtual ~MyTest();
virtual void SetUp() override;
};
class MyNotTest : public testing::NotTest {
public:
virtual ~MyNotTest();
virtual void SetUp() override;
};
class MacroBase {
public:
virtual void AddRef() = 0;
virtual void Virtual() {}
};
class Sub : public MacroBase {
END_COM_MAP()
SYSTEM_REDUNDANT1;
SYSTEM_REDUNDANT2;
};