Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

58 líneas
1.3KB

  1. class A {
  2. public:
  3. void a() { };
  4. virtual void va() = 0;
  5. virtual void a(int n);
  6. private:
  7. void c() { };
  8. };
  9. class B : public A {
  10. public:
  11. void b() { };
  12. virtual void vb();
  13. void a(double d) { };
  14. void a(int i) { };
  15. virtual void va();
  16. };
  17. class C : public B {
  18. public:
  19. virtual void c();
  20. void a(float) { };
  21. virtual void a();
  22. virtual void va();
  23. };
  24. int main() {
  25. // A a; A abstrakte Klasse
  26. B b;
  27. C c;
  28. A* pa=&b;
  29. B* pb=&c;
  30. float x = 1.2;
  31. pa->a();
  32. pa->va();
  33. pa->a(1);
  34. // pa->c(); A::c() private, hier nicht sichtbar
  35. // pa->b(); pa ist vom Typ A* und kennt deswegen b() nicht
  36. // pa->vb(); pa ist vom Typ A* und kennt deswegen vb() nicht
  37. pa->a(x);
  38. // pb->a(); pb ist vom Typ B*, hier ist A::a() überladen durch
  39. // entweder B::a(double) bzw. B::a(int) nicht durch B::a()
  40. pb->va();
  41. pb->a(1);
  42. // pb->c(); A::c() private, deswegen hier nicht sichtbar
  43. pb->b();
  44. pb->vb();
  45. pb->a(x);
  46. pa = &c;
  47. pa->a();
  48. pa->va();
  49. pa->a(1);
  50. // pa->c(); A::c() private, hier nicht sichtbar
  51. // pa->b(); pa ist vom Typ A*, kennt deswegen b() nicht
  52. // pa->vb(); pa ist vom Typ A*, kennt deswegen vb() nicht
  53. pa->a(x);
  54. }