summaryrefslogblamecommitdiff
path: root/tests/exec/multi_virt.cpp
blob: c0950b7aba07bf97d44c0c86befcde1f2ff77ecc (plain) (tree)













































                                                                                                        
#include <iostream>

class A { public : int a; virtual void fa();};
class B { public : int b; virtual void fb(); virtual void h();};

class C : public A, public B { public : int c; virtual void fc();};

class D { public : int d; virtual void fd(); virtual void h();};
class E : public C, public D { public : int e; virtual void fb(); virtual void fd(); virtual void h();};

void B::fb() {std::cout << "B::fb";}
void E::fb() {std::cout << "E::fb";}
void A::fa() {std::cout << "A::fa";}
void D::fd() {std::cout << "D::fd";}
void E::fd() {std::cout << "E::fd";}
void C::fc() {std::cout << "E::fc";}

void E::h() {std::cout << "E::h";}
void B::h() {std::cout << "B::h";}
void D::h() {std::cout << "D::h";}


int main() {
  
  E* cp = new E();
  cp->h();
  std::cout << "\n";
  cp->fd();
  std::cout << "\n";

  D* dp = new E() ;
  dp->h();
  std::cout << "\n";
  dp->fd();
  std::cout << "\n";

  A* ap = new C() ;
  ap->fa();

  std::cout << "\n";

  return 0;
}