Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

#include <iostream.

h>
class A
}
int num;
public:
A() {cout<<"A1"<<endl;{
A(int x){cout<<"A2"<<endl;}
A(const A& a){cout<<"A3"<<endl;}
~A() {cout<<"A4"<<endl;}
void f(){cout<<"A5"<<endl;}
virtual void g(){h(); cout<<"A6"<<endl;}
void h(){cout<<"A7"<<endl;}
};

class B: public A
{
public:
B() {cout<<"B1"<<endl;}
B(int x):A(x){cout<<"B2"<<endl;}
B(const B& b){cout<<"B3"<<endl;}
virtual ~B() {cout<<"B4"<<endl;}
virtual void f() {cout<<"B5"<<endl;}
virtual void h() {cout<<"B6"<<endl;}
void i(){cout<<"B7"<<endl;}
};
class C: public B
{
public:
A a;
B b;
C(int x = 5):B(x) {cout<<"C1"<<endl;}
virtual ~C() {cout<<"C2"<<endl;}
void h(){cout<<"C3"<<endl;}
void i(){cout<<"C4"<<endl;}
C j(){cout<<"C5"<<endl; return *this;}
{;
void main()
}
//part A.1
A *ptrAtoB = new B();
//Part A.2
B *ptrBtoC = new C();
A* ptrAtoC = new C();

//part B.1
ptrAtoB->h();
//part B.2
ptrAtoB->g();
//part C.1
ptrBtoC->f();
//part C.1
ptrBtoC->h();
//part D
((C*)ptrAtoC)->j();

//part E.1
delete ptrAtoB;
//part E.2
delete ptrBtoC;
//part E.3
delete ptrAtoC;
{

C class VTABLE

B class VTABLE

//----------------------// Part A:
//-----------------------

//----------------------// Part B:
//-----------------------

A class VTABLE

//----------------------// Part C:
//-----------------------

//----------------------// Part D:
//-----------------------

//----------------------// Part E:
//-----------------------

(1) int oopTEst ( long studentID ) { return (50+rand()%10);}


(2) const char* oopTest (const char* studentID ) {return "50";}
(3) long oopTest (long studentID , long copingFrom = 0) {return (30+rand()%10);}

X
Z
W
Y

W
Y
Z
X

Y
Z
X
W

X
Z
Y

BigInt b(1234);
char* intAsStr = b + 15;

template <class T>


T myMax (T left , T mid , T right)
{
int big = (left>mid) ? left : mid;
return ((big>right)? big : right);
}

You might also like