[ create a new paste ] login | about

Link: http://codepad.org/AxdjhsaH    [ raw code | output | fork ]

GiM - C++, pasted on May 3:
#include <iostream>

class A {
public: virtual void blah() { std::cout << "in a" << std::endl; }
        void dupa() { std::cout << "dupA" << std::endl; }
};

class B : public A {
public: void blah() { std::cout << "in b" << std::endl; }
        void dupa() { std::cout << "dupB" << std::endl; }
};

class C : public B {
public: void blah() { std::cout << "in c" << std::endl; }
        void dupa() { std::cout << "dupC" << std::endl; }
};

int main()
{
  A *a = new A;
  B *b = new B;
  C *c = new C;

  std::cout << "normal calls: " << std::endl;
  a->blah();
  a->dupa();
  b->blah();
  b->dupa();
  c->blah();
  c->dupa();

  std::cout << "b casted to a: " << std::endl;
  a = static_cast<A*>(b);
  a->blah();
  a->dupa();

  std::cout << "c casted to a: " << std::endl;
  a = static_cast<A*>(c);
  a->blah();
  a->dupa();

  std::cout << "c casted to b: " << std::endl;
  b = static_cast<B*>(c);
  b->blah();
  b->dupa();

  return 0;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
normal calls: 
in a
dupA
in b
dupB
in c
dupC
b casted to a: 
in b
dupA
c casted to a: 
in c
dupA
c casted to b: 
in c
dupB


Create a new paste based on this one


Comments: