I. Spunei de cte ori se apeleaz fiecare constructor n programul de mai jos i n ce ordine.
cl ass cl s1 { pr ot ect ed: i nt x; publ i c: cl s1( ) { x=13; } }; cl ass cl s2: publ i c cl s1 { pr ot ect ed: i nt y; publ i c: cl s2( ) { y=15; } }; cl ass cl s3: publ i c cl s2 { pr ot ect ed: i nt z; publ i c: cl s3( ) { z=17; } i nt f ( cl s3 ob) { r et ur n ob. x+ob. y+ob. z; } }; i nt mai n( ) { cl s3 ob; ob. f ( ob) ; r et ur n 0; }
II. Spunei ce reprezint o funcie virtual i n ce condiii o funcie virtual definete o clas abstract.
III. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass cl s { i nt x; publ i c: cl s( ) { x=23; } i nt get _x( ) { r et ur n x; } }; i nt mai n( ) { cl s *p1, *p2; p1=new cl s; p2=( cl s*) mal l oc( si zeof ( cl s) ) ; i nt x=p1- >get _x( ) +p2- >get _x( ) ; cout <<x; r et ur n 0; }
IV. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude <i ost r eam. h> cl ass B { i nt a; B( i nt i =0) { a=i ; } i nt get _a( ) { r et ur n a; } }; cl ass D: pr ot ect ed B { publ i c: D( i nt x=0) : B( x) {} i nt get _a( ) { r et ur n B: : get _a( ) ; } }; i nt mai n( ) { D d( - 89) ; cout <<d. get _a( ) ; r et ur n 0; }
V. Spunei pe scurt prin ce se caracterizeaz un cmp static al unei clase.
VI. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass cl s1 { publ i c: i nt a; cl s1( ) { a=7; } }; cl ass cl s2 { publ i c: i nt b; cl s2( i nt i ) { b=i ; } cl s2( cl s1& x) { b=x. a; } }; i nt mai n( ) { cl s1 x; cout <<x. a; cl s2 y( x) ; cout <<y. b; r et ur n 0; }
VII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass cl s { publ i c: i nt sa; cl s( i nt s=0) { sa=s; } oper at or f l oat ( ) { r et ur n sa; } }; i nt f ( f l oat c) { r et ur n ( c*( 1+c/ 100) ) ; } i nt mai n( ) { cl s p( 35) ; cout <<f ( p) ; r et ur n 0; }
VIII. Spunei ce reprezint o funcie prieten (friend) a unei clase.
IX. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass B { pr ot ect ed: i nt x; publ i c: B( ) { x=78; } }; cl ass D1: vi r t ual publ i c B { publ i c: D1( ) { x=15; } }; cl ass D2: vi r t ual publ i c B { publ i c: D2( ) { x=37; } }; cl ass C: publ i c D2, publ i c D1 { publ i c: i nt get _x( ) { r et ur n x; } }; i nt mai n( ) { C ob; cout <<ob. get _x( ) ; r et ur n 0; }
X. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude <i ost r eam. h> t empl at e <cl ass t i p> cl ass cl s { t i p z; publ i c: cl s( t i p i ) { z=i ; } t i p oper at or - ( cl s a) { r et ur n z- a. z; } i nt oper at or >=( cl s a) { r et ur n z>=a. z; } }; t empl at e <cl ass t i p> t i p di f ( t i p x, t i p y) { r et ur n x- y; } i nt di f ( cl s<i nt > x, cl s<f l oat > y) { r et ur n x>=y?x- y: y- x; } i nt mai n( ) { cl s<i nt > i =3; cl s<f l oat > j =4; cout <<di f ( i , j ) ; r et ur n 0; }
XI. Spunei dac o variabil constant poate fi transmis ca parametru al unei funcii i dac da, n ce situaii. Justificai.
XII. Spunei de cte ori se apeleaz destructorul clasei cl s n programul de mai jos. Justificai.
cl ass cl s { i nt x; publ i c: cl s( i nt i =0) { x=i ; } cl s( cl s& ob) { x=ob. x; } }; cl s& f ( cl s &c) { r et ur n c; } mai n( ) { cl s r ; cl s s=r ; f ( f ( f ( s) ) ) ; }
XIII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass B { i nt x; publ i c: B( i nt i =0) { x=i ; } }; cl ass D: publ i c B { publ i c: D( ) : B( 15) {} i nt f ( ) { r et ur n x; } }; i nt mai n( ) { D d; cout <<d. f ( ) ; r et ur n 0; }
XIV. Descriei pe scurt ce reprezint obiectul implicit al unei metode.
XV. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass cl s { st at i c i nt i ; i nt j ; publ i c: cl s( i nt x=7) { j =x; } st at i c i nt i mp( i nt k) { cl s a; r et ur n i +k+a. j ; } }; i nt cl s: : i ; i nt mai n( ) { i nt k=5; cout <<cl s: : i mp( k) ; r et ur n 0; }
XVI. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n caz negativ spunei de ce nu este corect.
#i ncl ude<i ost r eam. h> cl ass cl s { i nt x; publ i c: cl s( i nt i =32) { x=i ; } i nt f ( ) const { r et ur n x++; } }; voi d mai n( ) { const cl s d( - 15) ; cout <<d. f ( ) ; }
XVII. Descriei pe scurt ce reguli verific suprancrcarea operatorilor.
XVIII. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz pentru o valoare ntreag citit egal cu 7, n caz negativ spunei de ce nu este corect.
#i ncl ude <i ost r eam. h> f l oat f ( i nt y) { t r y { i f ( y%2) t hr ow y/ 2; } cat ch ( i nt i ) { i f ( i %2) t hr ow; cout <<Numar ul <<i << nu e bun! <<endl ; } r et ur n y/ 2; } i nt mai n( ) { i nt x; t r y { cout <<Da- mi un numar i nt r eg: ; ci n>>x; i f ( x) f ( x) ; cout <<Numar ul <<x<< nu e bun! <<endl ; } cat ch ( i nt i ) { cout <<Numar ul <<i << e bun! <<endl ; } r et ur n 0; }