Documente Academic
Documente Profesional
Documente Cultură
Teste Recapitulative
Teste Recapitulative
Clasa
class c { float a;
void afisisare();
}
are membrii:
a). publici;
c). protected;
2.
b). privai
d). date private i metode pubice.
Fie secvena:
class c {....};
void main()
{ c e
/* instructiuni */
}
n acest caz:
a). c este un obiect i e este clas;
b). c este o instana a clasei i e este un obiect;
c). c este o clasa i e este un obiect;
d).descrierea este eronat deoarece se folosete acelai identificator pentru
obiect.
3.
clas i
Avnd declaraia:
class persoana {
char nume[20];
int varsta;
public:
persoana();
int spune_varsta() { return varsta;}
};
void main()
{persoana p;
cout<<p.nume<<p.varsta;
}
n acest caz :
a). programul afiseaz numele i vrsta unei persoane;
b). nu este permis afisarea datelor unei persoane;
c). descriere eronat pentru c funcia membra nu este utilizat;
d). afiseaz doar vrsta unei persoane.
4. Fie clasa :
class c { int a,b;
public:
float c (int, int)
int det_a {return a;}
c (); }
Fie declaraia :
class c1 {int a ;}
class c2 :public c1
{ public :
int b ;
void scrie_a() {cout<<a ;}
}
void main ()
{ c2 ob ;
ob.scie_a () ;
}
d). virtual.
7. n secvena urmtoare:
class cls { public:static int s;};
int cls::s=0;
int main(){int i=7;cls::s=i;cout<<cls::s;}
8. Secvena urmatoare:
class persoana
{ int varsta, salariul;
friend ostream & operator<<(ostream &out,persoana p)
{out<<p.varsta<< <<p.salariul; return out;}
public:
persoana(int v){varsta=v;salariul=0;}
persoana(){varsta=0;salariul=0;}
}
int main()
{persoana p(1);cout<<p;}
Afiseaz:
a). afiseaz 1 0;
c). afiseaz 1 1;
b). afiseaz 0 0
d). afiseaz 0 1.
9. Secvena urmatoare:
class vector{int*pe,nr_c;
public:
operator int(){return nr_c;}
vector(int n){
pe=new int[n];nr_c=n;
while(n--) pe[n]=n;}
void f(int i){cout<<i<<endl;}
int main()
{vector x(10); f(x)}
Afiseaz:
a). 10 b). 9
c). numerele de la 1 la 10
d). numerele de la 0 la
10. Secvena urmatoare:
class vector{int*pe,nr_c;
public:
operator int(){return nr_c;}
vector(int n){
pe=new int[n];nr_c=n;
while(n--) pe[n]=n;}
void f(int i){cout<<i<<endl;}
int main()
{vector x(10); f(x)}
Afiseaza:
a). 10
b). 9
c). numerele de la 1 la 10
d). numerele de la 0 la 9
11. Secvena urmatoare:
class persoana
{int varsta;
public:
persoana(int v=18){varsta=18;}
operator int(){return varsta;}
persoana& operator++()
{varsta++;return *this;}
persoana operator ++(int)
{persoana aux=*this;varsta++;return aux;}
int main(){
persoana p(20);
int x=p++,y=++p;
cout<< x<< y ;}
Afiseaz:
a).20 20;
b).20 21 ;
c).21 22;
d).20 22.
12 . Fie secvena :
class c { int a;
public: c();
c(const c&);
void operator=(c&);}
int main()
{ c a;
//instructiuni;
c b=a;}
public:
complex(double x=10.0, double y=10.0){real=x; imag=y;}
complex(const complex &u)
{
real=u.real;
imag=u.imag;
}
..............
}
{
real=u.real;
imag=u.imag;
}
..............
}
Precizati situatia n care nu era necesara folosirea unui constructor cu parametri care iau
valori n mod implicit:
a) complex z2(3.42,-12.9);
b) complex z3(z2);
c) complex z=z2;
d) complex z4(z);
e) complex z5=z4;
16. Se d secvena de program:
class A
{
int a[3];
public:
A(int i, int j, int k){a[0]=i; a[1]=j; a[2]=k;}
int &operator[](int i){return a[i];}
};
void main(void)
{
A ob(1,2,3);
cout << ob[1];
ob[1]=25;
cout<<ob[1];
}
b) (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(9),(7),(2),(3),(2),(2);
c) (1),(3),(7),(1),(3),(7),(5),(9),(10),(6),(8),(4),(2),(8),(4),(2);
d) (1),(3),(5),(7),(9),(2),(4),(6),(6),(8),(8),(10),(2),(2),(4),(2);
e) (1),(3),(7),(1),(3),(7),(9),(5),(10),(6),(4),(8),(2),(8),(4),(2);
20. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n
caz negativ spunei de ce nu este corect. #include <iostream.h>
template <class tip>
class cls
{ tip z;
public: cls(tip i) { z=i; }
tip operator-(cls); };
template <class tip>
tip cls<tip>::operator-(cls<tip> a)
{ return z-a.z;
}
template <class tip>
tip dif(tip x, tip y)
{ return x-y;
}
int dif(int x, int y)
{ return x>=y?x-y:y-x;
}
int main()
{ cls<int> i=3; cls<float> j=4;
cout<<dif(i,j);
return 0;
}
21. Descriei pe scurt cum putei prelua o dat prin incluziune i a doua oar prin motenire o
clas numar ntr-o clas lista care descrie liste nevide de dimensiune variabil de
elemente de tip numar.
22. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n
caz negativ spunei de ce nu este corect.
#include<iostream.h>
class cls
{ static int x;
public: cls(int i=25) { x=i; }
friend int& f(cls); };
int cls::x=-13;
int& f(cls c) { return c.x; }
int main()
{ cls d(15);
cout<<f(d);
return 0;
23. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n
caz negativ spunei de ce nu este corect.
#include<iostream.h>
class cls
{ int v,nr;
public: cls(int i) { nr=i; v=new int[i]; }
friend int& operator[](int);
friend ostream& operator<<(ostream&,cls); };
int& operator[](cls& x, int i)
{ return x.v[i]; }
ostream& operator<<(ostream& o, cls x)
{ for(int i=0;i<x.nr;i++) cout<<x.v[i]<< ; return o; }
int main()
{ cls x(10);
x[5]=7;
cout<<x;
return 0;
}
24. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n
caz negativ spunei de ce nu este corect.
#include<iostream.h>
class cls
{ static int i;
int j;
public: cls(int x=7) { j=x; }
static int imp(int k){ cls a; return i+k+a.j; } };
int cls::i;
int main()
{ int k=5;
cout<<cls::imp(k);
return 0;
}
25. Spunei dac programul de mai jos este corect. n caz afirmativ, spunei ce afieaz, n
caz negativ spunei de ce nu este corect.
#include<iostream.h>
class cls
{ int x;
public: cls(int i=32) { x=i; }
int f() const; };
26. 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.
#include <iostream.h>
float f(float f)
{ if (f) throw f;
return f/2;
}
int main()
{ int x;
try
{
cout<<Da-mi un numar intreg: ;
cin>>x;
if (x) f(x);
else throw x;
cout<<Numarul <<x<< e bun!<<endl;
}
catch (int i)
{ cout<<Numarul <<i<< nu e bun!<<endl;
}
return 0;
}
27. Descrieti trei metode de proiectare diferite prin care elementele unei clase se pot regsi n
dublu exemplar, sub diverse forme, n definitia altei clase.
28. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spunei de ce nu este corect.
#include<iostream.h>
class B
{ int x;
public: B(int i=10) { x=i; }
int get_x() { return x; } };
class D: public B
{ public: D(int i):B(i) {}
D operator+(const D& a) {return x+a.x; } };
int main()
{ D ob1(7), ob2(-12);
cout<<(ob1+ob2).get_x();
return 0;
29. Spunei dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include<iostream.h>
class B
{ public: int x;
B(int i=16) { x=i; }
B f(B ob) { return x+ob.x; } };
class D: public B
{ public: D(int i=25) { x=i; }
B f(B ob) { return x+ob.x+1; }
void afisare(){ cout<<x; } };
int main()
{ B *p1=new D, *p2=new B, *p3=new B(p1->f(*p2));
cout<<p3->x;
return 0;
}
30. Spunei ce este obiectul implicit al unei metode si descrieti pe scurt propriettile pe care
le
cunoasteti despre acesta.
31. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
32. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include<iostream.h>
class cls
{ int x;
public: cls(int i=-20) { x=i; }
const int& f(){ return x; } };
int main()
{ cls a(14);
int b=a.f()++;
cout<<b;
return 0;
}
35. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include<iostream.h>
class B
{ int x;
public: B(int i=17) { x=i; }
int get_x() { return x; }
operator int() { return x; } };
class D: public B
{ public: D(int i=-16):B(i) {} };
int main()
{ D a;
cout<<27+a;
return 0;
}
37. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include<iostream.h>
class cls
{ static int x;
public: cls (int i=1) { x=i; }
cls f(cls a) { return x+a.x; }
static int g() { return f()/2; } };
int cls::x=7;
int main()
{ cls ob;
cout<<cls::g();
return 0;
}
38. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include<iostream.h>
class cls
{ int *v,nr;
public: cls(int i=0) { nr=i; v=new int[i];
for (int j=0; j<size(); j++) v[j]=3*j; }
~cls() { delete[] v; }
int size() { return nr; }
int& operator[](int i) { return v[i]; }
cls operator+(cls); };
cls cls::operator+(cls y)
{ cls x(size());
for (int i=0; i<size(); i++) x[i]=v[i]+y[i];
return x; }
int main()
{ cls x(10), y=x, z;
x[3]=y[6]=-15;
z=x+y;
for (int i=0; i<x.size(); i++) cout<<z[i];
return 0;
}
41. Spuneti dac programul de mai jos este corect. n caz afirmativ, spuneti ce afiseaz, n
caz
negativ spuneti de ce nu este corect.
#include <iostream.h>
class cls
{ int x;
public: cls(int i) { x=i; }
int set_x(int i) { int y=x; x=i; return y; }
int get_x(){ return x; } };
int main()
{ cls *p=new cls[10];
int i=0;
for(;i<10;i++) p[i].set_x(i);
for(i=0;i<10;i++) cout<<p[i].get_x(i);
return 0;
}
int f(T x, T y)
{ return x+y;
}
int f(int x, int y)
{ return x-y;
}
int main()
{ int a=5;
float b=8.6;
cout<<f(a,b);
return 0;
}
a;
} };
b;
b=i; }
{ b=x.a; } };