fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Ober {
  5. public:
  6. void f(void) {
  7. std::cout << "f der Oberklasse." << std::endl;
  8. }
  9. void g(void) {
  10. std::cout << "g der Oberklasse." << std::endl;
  11. }
  12. void h(void) {
  13. std::cout << "h der Oberklasse." << std::endl;
  14. }
  15. };
  16.  
  17. class Unter: public Ober {
  18. public:
  19. void f(void) {
  20. std::cout << "f der Unterklasse." << std::endl;
  21. }
  22. void h(void) {
  23. std::cout << "h der Unterklasse nutzt das ";
  24. Ober::h();
  25. }
  26. };
  27.  
  28. class AbstrakteOberklasse {
  29. protected:
  30. static const int j = 42;
  31. public:
  32. virtual void i(void) = 0;
  33. };
  34.  
  35. class KonkreteKlasse: public AbstrakteOberklasse {
  36. public:
  37. void i(void) {
  38. std::cout << "j der Oberklasse ist " << j << std::endl;
  39. }
  40. };
  41.  
  42. int main() {
  43. Unter unter;
  44. unter.f();
  45. unter.g();
  46. unter.h();
  47. //die folgende Zeile erzeugt die Compiler-Fehlermeldung
  48. // error: cannot declare variable 'geht_nicht' to be of abstract type 'AbstrakteOberklasse'
  49. //AbstrakteOberklasse geht_nicht;
  50. KonkreteKlasse konkret;
  51. konkret.i();
  52. return 0;
  53. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
f der Unterklasse.
g der Oberklasse.
h der Unterklasse nutzt das h der Oberklasse.
j der Oberklasse ist 42