Guest User

Untitled

a guest
Jul 17th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. struct Abstract
  2. {
  3. virtual ~Abstract() = 0;
  4. };
  5.  
  6. Abstract::~Abstract() {}
  7.  
  8. struct Valid: public Abstract
  9. {
  10. // Notice you don't need to actually overide the base
  11. // classes pure virtual method as it has a default
  12. };
  13.  
  14.  
  15. int main()
  16. {
  17. // Abstract a; // This line fails to compile as Abstract is abstract
  18. Valid v; // This compiles fine.
  19. }
  20.  
  21. struct Abstract {
  22. protected:
  23. Abstract() {}
  24. };
  25.  
  26. struct Valid: public Abstract {
  27. // No need to override anything.
  28. };
  29.  
  30.  
  31. int main() {
  32. // Abstract a; // This line fails constructor is protected
  33. Valid v; // This compiles fine.
  34. }
  35.  
  36. class Base
  37. {
  38. public:
  39. virtual ~Base() = 0;
  40. virtual void SomeVirtualMethod();
  41. };
  42.  
  43. inline Base::~Base()
  44. {
  45. }
  46.  
  47. class Derived : public Base
  48. {
  49. };
  50.  
  51. inline Base* createBase()
  52. {
  53. // return new Base; // <- This won't compile
  54. return new Derived; // <- This compile, Derived is not a pure virtual class !
  55. }
  56.  
  57. std::set<MyBaseClass*> mySet;
  58.  
  59. class abstract {
  60. virtual ~abstract()=0;
  61. };
  62.  
  63. abstract::~abstract() {}
Add Comment
Please, Sign In to add comment