Fie urmatorul program: class A { public: void m(){cout<<"A:m()"<<endl;}; virtual void v(){cout<<"A:v()"<<endl;}; }; class B: public A{ private

: void m(){cout<<"B:m()"<<endl;}; virtual void v(){cout<<"B:v()"<<endl;}; }; void main() { A a,*p; B b; b.m(); b.v(); p=&a; p->m(); p->v(); p=&b; p->m(); p->v(); } Care expresie este incorecta:

Answer Selected Answer: d. b.v() corect
;

d.
p->v();

2
Programarea generica este:

Answer Selected Answer: c. o metoda de a reutiliza codul sursa corect 3
Programarea cu template permite:

Answer Selected Answer: b. o metoda de a dezvolta sabloane de corect
clase si functii

4
Fie programul: class Persoana{ public: Persoana(char * n){nume=n;} void afisare(){cout<<nume<<endl;} char *nume; }; Constructorul Persoana(char *) poate fi utilizat pentru:

Answer Selected Answer: b.Conversia sirurilor de caractere in obiecte Persoana corect

cresterea vitezei de rulare 8 Programarea cu template este: Answer Selected Answer: b.} virtual void v(int i){i++.} void s(int i){i++. cresterea codului sursa si a codului executabil a.} }.cout<<"void A::s(int)"<<endl. Precizati care este ordinea de apel a destructorilor. Care afirmatie este corecta: Answer Selected Answer: d. polimorfism Analizati cu atentie urmatorul fragment de cod sursa. . o metoda de a dezvolta sabloane de clase si functii 9 Problema diamantului este data de : Answer Selected Answer: 10 d. utilizeaza legarea dinamica Fie urmatorul program: class A{ public: void s(){cout<<"void A::s()"<<endl. Definitia void s(int i)supraincarca definitia void s() 7 Utilizarea metodelor iniline duce la: Answer Selected Answer: d.5 Polimorfismul: Answer Selected Answer: 6 b.cout<<"virtual void A::v(int)"<<endl.} }. Ce se va afisa pe ecran? class W { public: ~W(){ cout<<"W::~W()"<<endl. } virtual void v(){cout<<"virtual void A::v()"<<endl.

} cout<<"W::W()"<<endl. Precizati care este ordinea de apel a constructorilor.} }. intmain (intargc. delete f. publicR { public: File(){ cout<<"File::File()"<<endl.class R { public: ~R(){ cout<<"R::~R()"<<endl. return 0.} Answer Analizati cu atentie urmatorul fragment de cod sursa.} }. public R { public: ~File(){ cout<<"File::~File()"<<endl. } Answer Selected Answer: a. return0. char* argv[]) { R* f = new File(). classFile: publicW. class File: public W.} }. Ce se va afisa pe ecran? classW { public: W(){ }. classR { public: R(){ }.} cout<<"R::R()"<<endl. R::~R() Analizati cu atentie urmatorul fragment de cod sursa. int main (int argc. Precizati care este ordinea de apel a destructorilor. char* argv[]) { R* f = new File(). Ce se va afisa pe ecran? class W { .

Vector<int. Vector<int. } ~Vector(){} void Print(ostream &os) { for (int i=0.} }. int dim=100> class Vector { T v[dim]. delete f.i++) os << v[i] << ' '. v6(v5). R::~R() 11 Analizati cu atentie urmatorul fragment de cod sursa. class R { public: virtual ~R(){ cout<<"R::~R()"<<endl. } }. Vector<int.} }. 10> 10> 20> 20> v1.i<dim. int main(int argc. *v4 = &v3. Cate clase si cate obiecte avem in programul urmator ? template<typename T=int. 2> test.sizeof(v)).public: virtual ~W(){ cout<<"W::~W()"<<endl. v5.0. v2. char* argv[]) { R* f = new File(). int main (int argc. public R { public: virtual ~File(){ cout<<"File::~File()"<<endl. Vector<int. return 0. os<<endl. } Answer Selected Answer: b. public: Vector(){ memset(v. class File: public W. char* argv[]) { Vector<int. . &v3=v1.} }.

void put(AbstractElem* ae)=0.return 0. B b. obiectele clasei nu pot fi construite folosind constructorul.*p. } Answer Selected Answer: e. int isEmpty(){}. Care afirmatie este corecta: b. AbstractElem* get()=0. }. AbstractElem* get(){}. void put(AbstractElem* ae){}. Fie urmatoarea specificare de clasa: class AbstractList{ public: virtual virtual virtual virtual virtual }. void Create()=0. 1 clasa si 5 obiecte 12 . void main(){ A a. int isFull()=0. int isEmpty()=0. . Care declarare este corecta: d. 14 Fie urmatorul program: class A{ public: void m(){cout<<"A:m()"<<endl.}. 13 . virtual void v(){cout<<"A:v()"<<endl.}. void erase()=0. int isFull(){}. }. Fie urmatoarea specificare de clasa: class AbstractList{ public: virtual virtual virtual virtual virtual }. AbstractList *ap. class B: public A{ private: void m(){cout<<"B:m()"<<endl.}.}. virtual void v(){cout<<"B:v()"<<endl.

} Care expresie este corecta: c. b. lucreaza cu datele statice ale clasei 15 Derivarea este: c. Precizati care este efectul apelarii metodei Create(). delete p. ce varianta a functiei se va apela si ce se afiseaza pe ecran? class A { protected: int dim.} virtual void Create(int d = 0x100) { dim = d. } c. p->Create( ). cout<<"B::Create("<<dim<<")"<<endl. o metoda de a dezvolta clase concrete pe baza unor clase abstracte 16 9. p->v(). p->m().m().} void Create(int d = 0x10) { dim = d.} virtual ~A(){ cout<<"A::~A()"<<endl. A::Create(16) . cout<<"A::Create("<<dim<<")"<<endl.v(). p=&b. } }. Metodele statice: c.b. p->m(). return 0. int main(int argc.} virtual ~B(){ cout<<"B::~B()"<<endl. char* argv[]) { A* p = new B(). } }. public: A(){ cout<<"A::A()"<<endl. Analizati cu atentie urmatorul fragment de cod sursa. class B: public A { public: B(){ cout<<"B::B()"<<endl. 14 .

} //alegeti declaratia operatorului de insertie in flux }. char* argv[]) { System a.17 Analizati cu atentie urmatorul fragment de cod sursa. class { System Clasa1 ob1.dim>&).} }.ob1(){ } virtual ~System(){ cout<<"S::~S()"<<endl. precizati care este declaratia corecta ? template<typename T=int. class Clasa2 { public: ~Clasa2(){ cout<<"C2::~C2()"<<endl. . Ce se va afisa pe ecran? class Clasa1 { public: ~Clasa1(){ cout<<"C1::~C1()"<<endl. } }. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de extractie care sa permita o extracie inlantuita. public: System():ob2(). int main (int argc. } ~Vector(){} T &operator[](int i){ return v[i].0. Vector<T.} }. template<typename T. } d.sizeof(v)). return 0. Clasa2 ob2. b. int dim> friend istream & operator>>(istream &. int dim=100> class Vector { T v[dim]. Precizati care este ordinea de apel a destructorilor. public: Vector(){ memset(v. S::~S() C2::~C2() C1::~C1() 18 Analizati cu atentie urmatorul fragment de cod sursa.

Circle::~Circle Point::~Point Shape::~Shape Point::~Point Shape::~Shape 20 Fie urmatoarea specificare de clase: class Complex.} virtual ~Shape(){ cout<<"Shape::~Shape"<<endl.} private: float x.y.} virtual ~Point(){ cout<<"Point::~Point"<<endl. v[n++] = new Point(). class Complex{ public: . int n = 0. i++) return 0. int main() { Shape * v[10].y(y){} operator Complex().} virtual ~Circle() { cout<<"Circle::~Circle"<<endl. float y=0):x(x).y. i<n. for(int i = 0. class Circle:public Point { int radius. operator float(){return x. } delete v[i].19 Analizati cu atentie codul urmator. } }. class Point:public Shape { int x. } }. }. Care este ordinea de apel a destructorilor? class Shape { public: Shape() { cout<<"Shape::Shape"<<endl. public: Point(){ cout<<"Point::Point"<<endl. class Punct{ public: Punct(float x=0. public: Circle(int r = 0) { cout<<"Circle::Circle"<<endl. d. v[n++] = new Circle().} }.

intdim> classVector { . }. } Programul afiseaza : Answer 15 22 Analizati cu atentie urmatorul fragment de cod sursa.Complex(float x=0. virtual void operator++(){inaltime++. }.} private: float x. float inaltime):Cerc(raza).getInaltime()<<endl.} float getInaltime(){return inaltime. class Cilindru: public Cerc{ public: Cilindru(float raza.y.} private: float inaltime. ++ *pc. Conversia obiectelor Complex in numere reale 21 Fie programul : class Cerc{ public: Cerc(float r):raza(r){} float getRaza(){return raza. void main() { Cerc *pc.} operator float(){return x. inaltime(inaltime){}. precizati care este declaratia corecta ? template<typenameT=int. float y=0):x(x). }. getch().y(y){} operator Punct(){return Punct(x.5).} private: float raza. Metoda Complex:: operator float() este utilizata pentru Answer d.} void operator++(){raza++.y). Cilindru c(1. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de acces intexat care sa permita modificarea elementelor vectorului. cout<<pc->getRaza()<<""<<c. pc=&c.

mid-1>::result : Calcul<N. intM> classCalcul<N. intLO=1. Deduceti ce calcul efectueaza sablonul urmator si se va afisa pe ecran? template<intN.cout<<"virtual void A::v(int)"<<endl. intHI=N> classCalcul { public: enum{ mid = (LO+HI+1)/2 }.T v[dim]. enum{ result = (N<mid*mid) ? Calcul<N. char* argv[]) { int x = Calcul<10>::result. } virtual void v(){cout<<"virtual void A::v()"<<endl.} }. class B:public A{ . } Answer c.HI>::result }. }. } ~Vector(){} //alegeti declaratia operatorului de acces indexat }. Answer Selected Answer: e.M.LO. T &operator[](inti). cout <<x<<endl.0.mid. 3 24 Fie urmatorul program: class A{ public: void s(){cout<<"void A::s()"<<endl. 23 Analizati cu atentie urmatorul fragment de cod sursa.sizeof(v)). //pentru cazul cand LO == HI template<intN. intmain(intargc. }. public: Vector(){ memset(v.} void s(int i){i++.} virtual void v(int i) {i++.cout<<"void A::s(int)"<<endl. return0.M>{ public: enum{ result = M }.

.0. public: Vector(){ memset(v. int dim=100> class Vector { T v[dim]. private: int dim. Care definitie este incorecta: Answer 4 25 Mostenirea virtuala rezolva: Answer Selected Answer: b. virtual int v(){cout<<"int B::v()"<<endl. Answer Selected Answer: d. problema diamantului 26 0 din 20 puncte Analizati cu atentie urmatorul fragment de cod sursa. precizati care este declaratia corecta ? template<typename T=int. return 1. int *pi. const C&). friend void operator>>(istream &. Vector<T. } // 3.} // 4.public: // 1. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de extractie care sa permita o extracie inlantuita. friend ostream& operator<<(ostream &o. specializare metoda virtuala virtual void v(int i){i++. int v[]).sizeof(v)).dim>&). scrierea de algoritmi generici 28 Mostenirea este o metoda de a reutiliza codul compilat 29 Fie urmatorul program: class C{ public: C(int n=0. supraincarcare metoda statica int s(){cout<<"int B::s()"<<endl.cout<<"virtual void B::v(int)"<<endl. 27 Programarea cu sabloane permite: Answer Selected Answer: d.cout<<"void B::s(int)"<<endl. return 1. specializare metoda statica void s(int i){i++. } ~Vector(){} T &operator[](int i){ return v[i]. supraincarcare metoda virtuala.} }.} // 2.} //alegeti declaratia operatorului de insertie in flux }.

} }. } ostream& operator<<(ostream &o. int main(int argc. } } ~Sir(){ if (p) delete[] p. } Answer Selected Answer: e. b[]={10. C x(3. Alegeti observatia corecta si precizati ce se va afisa pe ecran? . pi= v. return o. strcpy_s(p. cout<<(x=y)<<endl. { Sir b("Proiectare orientata pe obiecte"). } void main(){ int a[]={1. int v[]) dim=n.a). const C &m){ for(int j=0. b). } void Print(){ cout << p << endl. return 0. } Programul afiseaza: Answer Selected Answer: a. Proiectare orientata pe obiecte.}.3}.dim.Print(). 10 0 din 10 puncte Analizati cu atentie urmatorul fragment de cod sursa. a[0]=-100. p = new char[len+1].pi[j]<<" ". j<m. _TCHAR* argv[]) { Sir a("Programare in C++"). j++)o<< m. len = 0. { -100 2 3 30 • Întrebarea nr.20}. a = b.y(2.2. s). char *p. codul este corect si complet 31 Analizati cu atentie urmatorul fragment de cod sursa. } a. len+1. public: Sir(char * s = NULL) { p = NULL. if(s) { len = strlen(s). Alegeti observatia corecta si precizati ce se va afisa pe ecran? class Sir { int len. C::C(int n.

s). s). strcpy_s(p. Nu se poate spune ce se afiseaza. p = new char[len+1]. char *p. } . len = 0.len+1. public: Sir(char * s = NULL) { p = NULL. } Answer Selected Answer: a. } } ~Sir(){ if (p) delete[] p. } } ~Sir(){ if (p) delete[] p. char *p. { Sir b("Proiectare orientata pe obiecte"). if(s) { len = strlen(s). if(s) { len = strlen(s). } void Print(){ cout << p << endl. codul nu se compileaza 20 din 20 puncte Analizati cu atentie urmatorul fragment de cod sursa. } }. } a.Print(). int main(int argc. _TCHAR* argv[]) { Sir a("Programare in C++"). p = new char[len+1]. public: Sir(char * s=NULL) { p = NULL. strcpy_s(p. len =0. return 0. Alegeti observatia corecta ? class Sir { int len.class Sir { int len. len+1. a = b.

}. virtual void v(){cout<<"B:v()"<<endl.} }. } Answer Selected Answer: a. delete ps. char* argv[]) { while(true) { Sir * ps = new Sir("Programare in C++").}. Ce se va afisa pe ecran? class Baza { public: Baza(){ cout<<"B::B()"<<endl.}. int main(int argc. Precizati care este ordinea de apel a constructorilor si destructorilor. codul este corect . se compileaza dar ruleaza la infinit Analizati cu atentie urmatorul fragment de cod sursa.} virtual ~Derivat(){ cout<<"D::~D()"<<endl. void main(){ A a. return 0. class Derivat:public Baza { public: Derivat(){ cout<<"D::D()"<<endl. virtual void v(){cout<<"A:v()"<<endl.}. int main (int argc.*p. } Answer Selected Answer: b. }. B b. D::D() B::B() B::~B() D::D() 32 Fie urmatorul program: class A{ public: void m(){cout<<"A:m()"<<endl. .} virtual ~Baza(){ cout<<"B::~B()"<<endl. } return 0. char* argv[]) { Baza *s = new Derivat(). class B: public A{ private: void m(){cout<<"B:m()"<<endl.}.}.} }.

y(2. } ostream& operator<<(ostream &o. b[0]= -100.dim.2. p->v(). } void main(){ int a[]={1. b).m(). const C &m){ for(int j=0. const C&). b[]={10. . -100 20 Fie urmatorul program: class C{ public: C(int n=0. const C&). p->m(). x=y. p->m(). private: int dim. return o. b. cout<<x<<endl. j++)o<< m.a). int *pi. C x(3.3}. int v[]). friend ostream& operator<<(ostream &o. } Care expresie este corecta: Answer Selected Answer: 33 c. }. pi= v. j<m. int v[]) dim=n. } Programul afiseaza: { Answer Selected Answer: 34 d. private: int dim. p=&b. C::C(int n.20}. friend ostream& operator<<(ostream &o.b.pi[j]<<" ". Fie urmatorul program: class C{ public: C(int n=0. }. int *pi.v(). int v[]).

Ce se va afisa pe ecran? class Clasa1 { . j<m. Precizati care este ordinea de apel a constructorilor si destructorilor. return 0.pi[j]<<" ".} ~Derivat(){ cout<<"D::~D()"<<endl. B::B() D::D() D::~D() B::B() 26 Analizati cu atentie urmatorul fragment de cod sursa.} }. C x(3. delete s. cout<<(x=y)<<endl.3}. Ce se va afisa pe ecran? class Baza { public: Baza(){ cout<<"B::B()"<<endl. a[0]=-100. const C &m){ for(int j=0. 10 20 Analizati cu atentie urmatorul fragment de cod sursa. pi= v. class Derivat:public Baza { public: Derivat(){ cout<<"D::D()"<<endl.dim. } Answer Selected Answer: e.20}. char* argv[]) { Baza *s = new Derivat(). Precizati care este ordinea de apel a constructorilor. } { ostream& operator<<(ostream &o.} }. } Programul afiseaza: Answer Selected Answer: 35 b. b[]={10. } void main(){ int a[]={1.a).2. int v[]) dim=n. b).} virtual ~Baza(){ cout<<"B::~B()"<<endl. return o.y(2.C::C(int n. int main (int argc. j++)o<< m.

int main (int argc. { Sir b("Proiectare orientata pe obiecte"). class Clasa2 { public: Clasa2() { cout<<"C2::C2()"<<endl. strcpy_s(p. class System { Clasa1 ob1. if(s) { len = strlen(s). p = new char[len+1].} }. } }. int main(int argc. public: System() { cout<<"S::S()"<<endl. len = 0.} }.} }. _TCHAR* argv[]) { Sir a("Programare in C++"). char *p. return 0. Clasa2 ob2.public: Clasa1(){ cout<<"C1::C1()"<<endl. a = b. len+1. return 0. . s). } a. } void Print(){ cout << p << endl. } Answer Selected Answer: d. } } ~Sir(){ if (p) delete[] p. C1::C1() C2::C2() S::S() 37 Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta si precizati ce se va afisa pe ecran? class Sir { int len.Print(). char* argv[]) { System a. public: Sir(char * s = NULL) { p = NULL.

mostenirea multipla 40 Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a constructorilor si destructorilor. char* argv[]) { Baza *s = new Derivat(). return 0. class Derivat:public Baza { public: Derivat(){ cout<<"D::D()"<<endl.} }. nonempty public: Empty(){} ~Empty(){} }. Ce se va afisa pe ecran? class Baza { public: Baza(){ cout<<"B::B()"<<endl. codul este corect si complet 38 Analizati cu atentie urmatorul fragment de cod sursa. } Answer Selected Answer: a.} }. D::D() D::~D() 39 Problema diamantului este data de : Answer Selected Answer: d.} Answer b. Proiectare orientata pe obiecte. int main (int argc. Precizati ce catitate de memorie se aloca pentru clasele care urmeaza pe o platforma pe 64biti? class Empty { typedef int Int. delete s.} ~Baza(){ cout<<"B::~B()"<<endl. // typedef members don't make a class class EmptyToo : public Empty .} ~Derivat(){ cout<<"D::~D()"<<endl.

class EmptyThree : public EmptyToo { public: EmptyThree(){} virtual ~EmptyThree(){} }. 4 4 4 . return 0.{ public: EmptyToo(){} virtual ~EmptyToo(){} }. } Answer Selected Answer: a. int main() { std::cout << sizeof(Empty)<<” ” << sizeof(EmptyToo)<<” ” << sizeof(EmptyThree)<<endl.

Sign up to vote on this title
UsefulNot useful