=========================preview======================
(comp151)[2001](s)final~PPSpider^_10137.pdf
Back to COMP151 Login to download
======================================================
COMP151{Lectures1,2,3 FinalExam{May23,2001 ExamDuration{3hours
Name: E-mail: StudentNo: Lecture/LabSection:
Answerallofthefollowingquestions.Doyourworkontheexampaper. Ifnecessary,youmaywriteonthebackofthesheets. Thelastthreeblanksheetsofthisexammaybetorno.andusedasscratchpaper.
1.(5points)Considerthefollowingclassandfunctionde.nitions:
#include.iostream.
classB
{public:

virtualvoiddisplay()
{cout.."DisplayingB"..endl.}
}.

classD:publicB
{public:
virtualvoiddisplay()
{cout.."DisplayingD"..endl.}
}.

voidf(B&b)
{b.display().}

voidg(Bb)
{b.display().}


Now,assumethefollowingobjectdeclarations:
Dd.
Bb.d.
B*p.&d.


Assumetheabovede.nitionsanddeclarations. Foreachofthe.vefunctioncallslistedbelow,writedowntheoutputgenerated.1pt each
(a)b.display().DisplayingB
(b)p-.display().DisplayingD

(c)f(d).DisplayingD
(d)g(d).DisplayingB
(e)f(b).DisplayingB
2.(10points)InthisquestiontherearetwoclassesBandD.Theirclassde.nitionsare containedin.leD.h.Thereisalsoa.leD.cppcontainingtheimplementationofD's memberfunctionsthatyouwillhavetowrite.
//******************fileD.h********************************
classB
{public:

B(intval){x.val.}
intget_x(){returnx.}
virtualvoidreturn_x().0.

private:
intx.

}.
classD:publicB
{public:
D(intval). //setstheB::xmemberofDtoval
virtualvoidreturn_x().//printstheB::xpartofD

}.
//******************EndofD.h*******************************


Asanexample:whenthefollowingdriveriscompiledtogetherwithD.cppandthen run,theappendedoutputisprinted.
#include"D.h"
voidmain()
{Dd(5).

d.return_x().
}
OUTPUT
B::xmember.5
3


Toanswerthisquestionyouneedtowritethe.leD.cppthatcontainstheimplemen-tationsofD'smemberfunctions.
//******************fileD.cpp*************************
#include.iostream.
#include"D.h"

//WritetheimplementationofD'sconstructorbelowthisline

(7pts)
D::D(intval):B(val){}.

//Note:Thisistheonlywayofwritingtheconstructor.
//Itisnotpossibletowritesomethingsuchas
//D::D(intval):{B::x.val}.

//WritetheimplementationofD'sreturn_x()belowthisline

(3pts)
voidD::return_x(){cout.."B::xmember."..get_x()..endl.}

//Note:SincexisprivateinB,get_x()mustbeused
//toaccessitsvalue.

4


3.(15points)Thisquestionconcernsthefollowingpieceofcode:
1.#include.iostream.
2.classB 3.{public:
4.
B(){x.newint.*x.5.cout.."CB"..endl.}

5.
~B(){deletex. cout.."DB"..endl.}

6.
voiddisplay(){cout.."*x."..*x..endl.} 7.private:


8. int*x. 9.}.
10.classD:publicB 11.{public:
12.
D(){y.newint.*y.3.cout.."CD"..endl.}

13.
~D(){deletey. cout.."DD"..endl.}

14.
voiddisplay(){cout.."*y."..*y..endl.}


15.private:
16.int*y. 17.}.
18.voidmain() 19.{Dd.
20.d.display().
21.cout.."*******1*******"
22.B*p.newD.
23.p-.display().
24.cout.."*******2*******"
25.deletep.
26.cout.."*******3*******"27.}
..endl.
..endl.
..endl.
5


(a)Writethecompleteoutputoftheprogram:6pts
OUTPUT
CB
CD
*y.3
*