add ipi10

This commit is contained in:
2020-01-13 13:31:38 +01:00
parent 52cef9b878
commit 554b59e1f4
4 changed files with 206 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
class A {
public:
void a() { };
virtual void va() = 0;
virtual void a(int n);
private:
void c() { };
};
class B : public A {
public:
void b() { };
virtual void vb();
void a(double d) { };
void a(int i) { };
virtual void va();
};
class C : public B {
public:
virtual void c();
void a(float) { };
virtual void a();
virtual void va();
};
int main() {
// A a; A abstrakte Klasse
B b;
C c;
A* pa=&b;
B* pb=&c;
float x = 1.2;
pa->a();
pa->va();
pa->a(1);
// pa->c(); A::c() private, hier nicht sichtbar
// pa->b(); pa ist vom Typ A* und kennt deswegen b() nicht
// pa->vb(); pa ist vom Typ A* und kennt deswegen vb() nicht
pa->a(x);
// pb->a(); pb ist vom Typ B*, hier ist A::a() überladen durch
// entweder B::a(double) bzw. B::a(int) nicht durch B::a()
pb->va();
pb->a(1);
// pb->c(); A::c() private, deswegen hier nicht sichtbar
pb->b();
pb->vb();
pb->a(x);
pa = &c;
pa->a();
pa->va();
pa->a(1);
// pa->c(); A::c() private, hier nicht sichtbar
// pa->b(); pa ist vom Typ A*, kennt deswegen b() nicht
// pa->vb(); pa ist vom Typ A*, kennt deswegen vb() nicht
pa->a(x);
}