add ana
This commit is contained in:
@@ -11,13 +11,24 @@ class A {
|
||||
|
||||
class B : public A {
|
||||
public:
|
||||
using A::a;
|
||||
void b() { printf("B::b()\n");};
|
||||
virtual void vb() {printf("B::vb()\n"); };
|
||||
void a(double d) {printf("B::a(double %f)\n", d); };
|
||||
void a(int i) {printf("B::a(int %d)\n", i); };
|
||||
virtual void va() {printf("B::va()\n"); };
|
||||
B operator+(int n);
|
||||
friend B operator+(int n, B& b);
|
||||
};
|
||||
|
||||
B B::operator+(int n) {
|
||||
return *this;
|
||||
}
|
||||
|
||||
B operator+(int n, B& b) {
|
||||
return b + n;
|
||||
}
|
||||
|
||||
class C : public B {
|
||||
public:
|
||||
virtual void c() {printf("C::c()\n"); };
|
||||
@@ -29,6 +40,7 @@ class C : public B {
|
||||
int main() {
|
||||
// A a; A abstrakte Klasse
|
||||
B b;
|
||||
B b2;
|
||||
C c;
|
||||
A* pa=&b;
|
||||
B* pb=&c;
|
||||
@@ -40,7 +52,7 @@ int main() {
|
||||
// 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); // B::a(int), hier wird double x implizit zu int gecastet
|
||||
// pb->a(); pb ist vom Typ B*, hier ist A::a() überladen durch
|
||||
pb->a(); //pb ist vom Typ B*, hier ist A::a() überladen durch
|
||||
// entweder B::a(double) bzw. B::a(int), deswegen existiert B::a() nicht
|
||||
pb->va(); // C::va()
|
||||
pb->a(1); // B::a(int)
|
||||
|
||||
Reference in New Issue
Block a user