Sunteți pe pagina 1din 7

Întrebarea nr.

1 20 points Save
Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta ?

class Sir
{
int len;
char *p;
public:
Sir(char * s=NULL)
{
p = NULL;
len =0;

if(s)
{
len = strlen(s);
p = new char[len+1];
strcpy_s(p,len+1, s);

}
}
~Sir(){ if (p) delete[] p; }

};

int main(int argc, char* argv[])


{

while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}

codul este sintactic corect , se compileaza dar nu se executa


codul este corect , se compileaza dar ruleaza la infinit
Nu se afiseaza nimic, codul nu se compileaza
Se compileaza si ruleaza pana cand se epuizeaza memoria, este eliminat de sistem
Se compileaza dar nu se executa si afiseaza un mesaj de eroare

Întrebarea nr. 2 20 points Save


Analizati cu atentie urmatorul fragment de cod sursa. Deduceti ce calcul efectueaza sablonul
urmator si se va afisa pe ecran?

template <int N, int LO=1, int HI=N>


class Calcul {
public:

enum { mid = (LO+HI+1)/2 };


enum { result = (N<mid*mid) ? Calcul<N,LO,mid-1>::result
: Calcul<N,mid,HI>::result };
};

//pentru cazul cand LO == HI


template<int N, int M>
class Calcul<N,M,M> {
public:
enum { result = M };
};

int main(int argc, char* argv[])


{
int x = Calcul<10>::result;
cout << x<< endl;
return 0;
}

Întrebarea nr. 3 10 points Save


Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
destructorilor. Ce se va afisa pe ecran?
class Clasa1
{
public:
~Clasa1(){ cout<<"C1::~C1()"<<endl; }
};

class Clasa2
{
public:
~Clasa2(){ cout<<"C2::~C2()"<<endl;}
};

class System
{
Clasa1 ob1;
Clasa2 ob2;
public:
System():ob2(),ob1(){ }
virtual ~System(){ cout<<"S::~S()"<<endl;}

};
int main (int argc, char* argv[])
{
System a;
return 0;
}

C2::~C2()
C1::~C1()
S::~S()
C1::~C1()
C2::~C2()
S::~S()
S::~S()
S::~S()
C1::~C1()
C2::~C2()
S::~S()
C2::~C2()
C1::~C1()

Întrebarea nr. 4 10 points Save


Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a
constructorilor. Ce se va afisa pe ecran?
class Clasa1
{
public:
Clasa1(){ cout<<"C1::C1()"<<endl;}

};
class Clasa2
{
public:
Clasa2() { cout<<"C2::C2()"<<endl;}
};
class System
{
Clasa1 ob1;
Clasa2 ob2;
public:
System() { cout<<"S::S()"<<endl;}
};
int main (int argc, char* argv[])
{
System a;
return 0;
}

S::S()
C1::C1()
C2::C2()
S::S()
C2::C2()
C1::C1()
C1::C1()
C2::C2()
S::S()
S::S()
C1::C1()
C2::C2()

Întrebarea nr. 5 5 points Save


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:

p=&a;

b.m();

p->m();

p->v();

Întrebarea nr. 6 5 points Save


Fie urmatoarea specificare de clase:

class Complex;
class Punct{
public:
Punct(float x=0, float y=0):x(x),y(y){}
operator Complex();
operator float(){return x;}
private:
float x,y;
};
class Complex{
public:
Complex(float x=0, float y=0):x(x),y(y){}
operator Punct(){return Punct(x,y);}
operator float(){return x;}
private:
float x,y;
};

Metoda Complex:: operator float() este utilizata pentru

Conversia unui numar real in obiect Complex

Conversia unui obiect Complex in obiect Punct

Conversia obiectelor Complex in numere reale

Conversia unui obiect Punct in obiect Complex

Întrebarea nr. 7 5 points Save


Fie urmatoarea specificare de clasa:

class AbstractList{
public:

virtual void erase()=0;


virtual void put(AbstractElem* ae){};
virtual AbstractElem* get(){};
virtual int isEmpty(){};
virtual int isFull(){};
};

Care afirmatie este corecta:

AbstractList este o clasa concreta

AbstractList este o clasa abstracta

isEmpty() este metoda virtuala pura

obiectele clasei pot fi construite cu AbstractList();

Întrebarea nr. 7 5 points Save


Fie urmatoarea specificare de clasa:

class AbstractList{
public:

virtual void erase()=0;


virtual void put(AbstractElem* ae){};
virtual AbstractElem* get(){};
virtual int isEmpty(){};
virtual int isFull(){};
};

Care afirmatie este corecta:

AbstractList este o clasa concreta

AbstractList este o clasa abstracta

isEmpty() este metoda virtuala pura

obiectele clasei pot fi construite cu AbstractList();

Fie urmatorul program:

class C{
public:
C(int n=0, int v[]);
friend ostream& operator<<(ostream &o, const C&);

private:
int dim;
int *pi;
};

C::C(int n, int v[]) {


dim=n;
pi= v;

ostream& operator<<(ostream &o, const C &m){


for(int j=0; j<m.dim; j++)o<< m.pi[j]<<" ";
return o;
}
void main(){
int a[]={1,2,3}, b[]={10,20};
C x(3,a),y(2, b);
a[0]=-100;
cout<<(x=y)<<endl;

}
Programul afiseaza:

100 2 3

-100 2 3

10 20

1 2 3

Întrebarea nr. 9 10 points Save


Diagrama UML urmãtoare reprezintã

Diagrama de caz
Diagrama de activitãþi
Diagrama de stari
Diagrama de secventa

Întrebarea nr. 10 10 points Save


Diagrama UML urmãtoare reprezintã

Diagrama de caz
Diagrama de activitãþi
Diagrama de stãri
Diagrama de secventã

Rezultatul: 45 din 100 puncte

S-ar putea să vă placă și