Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Abstract
- {
- virtual ~Abstract() = 0;
- };
- Abstract::~Abstract() {}
- struct Valid: public Abstract
- {
- // Notice you don't need to actually overide the base
- // classes pure virtual method as it has a default
- };
- int main()
- {
- // Abstract a; // This line fails to compile as Abstract is abstract
- Valid v; // This compiles fine.
- }
- struct Abstract {
- protected:
- Abstract() {}
- };
- struct Valid: public Abstract {
- // No need to override anything.
- };
- int main() {
- // Abstract a; // This line fails constructor is protected
- Valid v; // This compiles fine.
- }
- class Base
- {
- public:
- virtual ~Base() = 0;
- virtual void SomeVirtualMethod();
- };
- inline Base::~Base()
- {
- }
- class Derived : public Base
- {
- };
- inline Base* createBase()
- {
- // return new Base; // <- This won't compile
- return new Derived; // <- This compile, Derived is not a pure virtual class !
- }
- std::set<MyBaseClass*> mySet;
- class abstract {
- virtual ~abstract()=0;
- };
- abstract::~abstract() {}
Add Comment
Please, Sign In to add comment