Scrap
Scrap
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();
d.
p->v();
2
Programarea generica este:
Answer
Selected Answer: corect
c.
o metoda de a
reutiliza codul
sursa
3
Programarea cu template
permite:
Answer
Selected Answer: corect
b.
o metoda de a
dezvolta sabloane de
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: corect
b.Conversia sirurilor de
caractere in obiecte Persoana
5
Polimorfismul:
Answer
Selected Answer:
b.
utilizeaza legarea
dinamica
6
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual
void v()
{cout<<"virtual void
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
Selected Answer:
7
Utilizarea metodelor iniline
duce la:
Answer
Selected Answer:
d.
cresterea codului sursa si a
codului executabil
a.
cresterea vitezei de rulare
8
Programarea cu template
este:
Answer
Selected Answer:
b. o metoda de a
dezvolta sabloane de
clase si functii
9
Problema diamantului este
data de :
Answer
Selected Answer:
d.
polimorfism
10
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
destructorilor. Ce se va
afisa pe ecran?
class W
{
public:
~W()
{ cout<<"W::~W
()"<<endl;}
};
class R
{
public:
~R()
{ cout<<"R::~R
()"<<endl;}
};
class File: public
W, public R
{
public:
~File()
{ cout<<"File::~File
()"<<endl;}
};
int main (int argc,
char* argv[])
{
R* f = new
File();
delete f;
return 0;
}
Answer
Selected Answer:
a.
R::~R()
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a constructorilor. Ce se va afisa pe ecran?
classW
{
public:
W(){ cout<<"W::W()"<<endl;}
};
classR
{
public:
R(){ cout<<"R::R()"<<endl;}
};
};
R* f = new File();
return0;
}
Answer
este ordinea de apel a
destructorilor. Ce se va
afisa pe ecran?
class W
{
public:
virtual ~W()
{ cout<<"W::~W
()"<<endl;}
};
class R
{
public:
virtual ~R()
{ cout<<"R::~R
()"<<endl;}
};
class File: public
W, public R
{
public:
virtual ~File
()
{ cout<<"File::~File
()"<<endl;}
};
int main (int argc,
char* argv[])
{
R* f = new
File();
delete f;
return 0;
}
Answer
Selected Answer:
b.
R::~R()
11
Analizati cu atentie
urmatorul fragment de
cod sursa. Cate clase si
cate obiecte avem in
programul urmator ?
template<typename
T=int, int dim=100>
class Vector
{
T v[dim];
public:
Vector()
{ memset(v,0,sizeof
(v)); }
~Vector(){}
void Print
(ostream &os)
{
for (int
i=0;i<dim;i++)
os
<< v[i] << ' ';
os<<endl;
}
};
Vector<int,
10> v1, v2, &v3=v1;
Vector<int,
10> *v4 = &v3;
Vector<int,
20> v5;
Vector<int,
20> v6(v5);
return 0;
}
Answer
Selected Answer:
e.
1 clasa si 5 obiecte
Vector<int,
20> v5;
Vector<int,
20> v6(v5);
return 0;
}
Answer
Selected Answer:
e.
1 clasa si 5 obiecte
12
. Fie urmatoarea specificare de clasa:
class AbstractList{
public:
13
. Fie urmatoarea specificare de clasa:
class AbstractList{
public:
14
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=&b;
p->m();
p->v();
}
Care expresie este corecta:
c. p->m();
14
. Metodele statice:
c. lucreaza cu datele statice ale clasei
15
Derivarea este:
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/check.gif" \* MERGEFORMATINET c. o metoda de a dezvolta clase concrete pe baza unor clase abstracte
16
9. Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este efectul apelarii metodei Create(), ce varianta a functiei se va apela
si ce se afiseaza pe ecran?
class A
{
protected:
int dim;
public:
A(){ cout<<"A::A()"<<endl;}
virtual ~A(){ cout<<"A::~A()"<<endl;}
void Create(int d = 0x10)
{
dim = d;
cout<<"A::Create("<<dim<<")"<<endl;
}
};
class B: public A
{
public:
B(){ cout<<"B::B()"<<endl;}
virtual ~B(){ cout<<"B::~B()"<<endl;}
A* p = new B();
p->Create( );
delete p;
return 0;
}
c. A::Create(16)
17
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;
}
d.
S::~S()
C2::~C2()
C1::~C1()
18
Analizati cu atentie urmatorul fragment de cod sursa. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de
extractie care sa permita o extracie inlantuita, precizati care este declaratia corecta ?
class Shape
{
public:
Shape() { cout<<"Shape::Shape"<<endl;}
virtual ~Shape(){ cout<<"Shape::~Shape"<<endl; }
};
class Point:public Shape
{
int x,y;
public:
Point(){ cout<<"Point::Point"<<endl;}
virtual ~Point(){ cout<<"Point::~Point"<<endl; }
};
class Circle:public Point
{
int radius;
public:
Circle(int r = 0) { cout<<"Circle::Circle"<<endl;}
virtual ~Circle() { cout<<"Circle::~Circle"<<endl;}
};
int main()
{
Shape * v[10];
int n = 0;
v[n++] = new Circle();
v[n++] = new Point();
20
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;
};
21
Fie programul :
class Cerc{
public:
Cerc(float r):raza(r){}
float getRaza(){return raza;}
void operator++(){raza++;}
private:
float raza;
};
class Cilindru: public Cerc{
public:
Cilindru(float raza, float inaltime):Cerc(raza), inaltime(inaltime){};
virtual void operator++(){inaltime++;}
float getInaltime(){return inaltime;}
private:
float inaltime;
};
void main()
{
Cerc *pc;
Cilindru c(1,5);
pc=&c; ++ *pc;
cout<<pc->getRaza()<<""<<c.getInaltime()<<endl;
getch();
}
Programul afiseaza :
Answer 15
22
Analizati cu atentie urmatorul fragment de
cod sursa. Se doreste introducerea in
definitia sablonului de clasa Vector a unui
operator de acces intexat care sa permita
modificarea elementelor vectorului, precizati
care este declaratia corecta ?
template<typenameT=int, intdim>
classVector
{
T v[dim];
public:
Vector(){ memset(v,0,sizeof
(v)); }
~Vector(){}
//alegeti declaratia
operatorului de acces indexat
};
Answer
Selected Answer:
e.
T &operator[](inti);
23
Analizati cu atentie urmatorul fragment de cod sursa. Deduceti ce calcul efectueaza sablonul urmator si se va afisa pe ecran?
24
Fie urmatorul program:
class A{
public:
void s(){cout<<"void A::s()"<<endl;}
void s(int i){i++;cout<<"void A::s(int)"<<endl; }
virtual void v(){cout<<"virtual void A::v()"<<endl;}
virtual void v(int i)
{i++;cout<<"virtual void A::v(int)"<<endl;}
};
class B:public A{
public:
// 1. supraincarcare metoda statica
int s(){cout<<"int B::s()"<<endl; return 1;}
25
Mostenirea virtuala rezolva:
Answer
Selected Answer:
b.
problema diamantului
26
0 din 20 puncte
//alegeti declaratia
operatorului de insertie in
flux
};
Answer
Selected Answer:
d.
friend void operator>>(istream &,
Vector<T,dim>&);
27
Programarea cu sabloane
permite:
Answer
Selected Answer:
d.
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, int v[]);
friend ostream&
operator<<(ostream &o, const
C&);
private:
int dim;
int *pi;
};
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:
Answer
Selected Answer:
a.
-100 2 3
30
Întrebarea nr. 10
0 din 10 puncte
}
~Sir(){ if (p) delete[]
p; }
void Print(){ cout << p
<< endl; }
};
}
~Sir(){ if (p) delete[]
p; }
void Print(){ cout << p
<< endl; }
};
31
Analizati cu atentie urmatorul fragment de cod sursa. Alegeti observatia corecta si precizati ce se va afisa pe ecran?
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; }
void Print(){ cout << p << endl; }
};
20 din 20 puncte
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/grade-correct_u.gif" \* MERGEFORMATINET 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; }
};
while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}
Answer
Selected Answer:
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/check.gif" \* MERGEFORMATINET a.
codul este corect , se compileaza dar
ruleaza la infinit
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D
()"<<endl;}
virtual ~Derivat()
{ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv
[])
{
32
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=&b;
p->m();
p->v();
}
Care expresie este
corecta:
Answer
Selected Answer:
c.
p->m();
33
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);
x=y;
b[0]= -100;
cout<<x<<endl;
}
Programul afiseaza:
Answer
Selected Answer:
d.
-100 20
34
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:
Answer
Selected Answer:
b.
10 20
35
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
virtual ~Baza
(){ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
{ cout<<"D::~D
()"<<endl;}
};
int main (int argc,
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
Selected Answer:
e.
B::B()
D::D()
D::~D()
B::B()
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
Selected Answer:
e.
B::B()
D::D()
D::~D()
B::B()
26
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;
}
Answer
Selected Answer:
d.
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;
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; }
void Print()
{ cout << p <<
endl; }
};
38
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
~Baza()
{ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
{ cout<<"D::~D
()"<<endl;}
};
int main (int argc,
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
Selected Answer:
a.
D::D()
D::~D()
39
Problema diamantului este data de :
Answer
Selected Answer:
d.
mostenirea multipla
40
class Empty
{
typedef int Int; //
typedef members don't
make a class nonempty
public:
Empty(){}
~Empty(){}
};
class Empty
{
typedef int Int; //
typedef members don't
make a class nonempty
public:
Empty(){}
~Empty(){}
};
int main()
{
std::cout
<< sizeof(Empty)<<” ”
<< sizeof(EmptyToo)<<” ”
<< sizeof(EmptyThree)
<<endl;
return 0;
}
Answer
Selected Answer:
a.
4 4 4
class C{
public:
C(int n=0, int v[]);
friend ostream& operator<<(ostream &o, const C&);
private:
int dim;
int *pi;
};
}
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:
Answer a. 10 20
class A{
public:
};
class B:public A{
public:
// 1. supraincarcare metoda statica
int s(){cout<<"int B::s()"<<endl; return 1;}
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:
virtual ~Clasa1(){ cout<<"C1::~C1()"<<endl; }
};
class Clasa2
{
public:
virtual ~Clasa2(){ cout<<"C2::~C2()"<<endl;}
};
class System
{
Clasa2 ob1;
Clasa1 ob2;
public:
System():ob1(),ob2(){ }
virtual ~System(){ cout<<"S::~S()"<<endl;}
};
int main (int argc, char* argv[])
{
System a;
return 0;
}
Answer d. S::~S()
C1::~C1()
C2::~C2()
• Întrebarea nr. 1
0 din 5 puncte
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 a.
Answer: p=&b;
• Întrebarea nr. 2
0 din 5 puncte
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
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();
• Întrebarea nr. 3
0 din 5 puncte
• Întrebarea nr. 4
0 din 5 puncte
Programarea cu template
permite:
Answer
b.
utilizar
Selected ea
Answer: polimorf
ismului
dinamic
Întrebarea nr. 5
0 din 5 puncte
Fie programul:
class Persoana{
public:
Persoana(char
* n){nume=n;}
void afisare()
{cout<<nume<<endl;}
char *nume;
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
a.
Selected Construirea
Answer: de siruri de
caractere
• Întrebarea nr. 6
5 din 5 puncte
Polimorfismul:
Answer
b.
Selected utilizea
za
Answer: legarea
dinamica
• Întrebarea nr. 7
0 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual
void v()
{cout<<"virtual void
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
d.
void s
Selected (int i)
Answer: este
metoda
virtuala
• Întrebarea nr. 8
0 din 5 puncte
0 din 10 puncte
Programarea cu template
permite:
Answer
d.
Selected reutiliz
Answer: a codul
compilat
• Întrebarea nr. 10
0 din 10 puncte
• Întrebarea nr. 11
20 din 20 puncte
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
destructorilor. Ce se va
afisa pe ecran?
class W
{
public:
~W()
{ cout<<"W::~W
()"<<endl;}
};
class R
{
public:
~R()
{ cout<<"R::~R
()"<<endl;}
};
class File: public
W, public R
{
public:
~File()
{ cout<<"File::~File
()"<<endl;}
};
int main (int argc,
char* argv[])
{
R* f = new
File();
delete f;
return 0;
}
Answer
Selected a.
Answer: R::~R()
Întrebarea nr. 12
0 din 20 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Cate clase si cate obiecte avem in programul urmator ?
return 0;
}
Answer
e.
Selected Answer:
1 clasa si 5 obiecte
class AbstractList{
public:
------------------------------------------------------------------------------------------------------------------------------------
2. Fie programul:
class Persoana{
public:
Persoana(char * n){nume=n;}
void afisare(){cout<<nume<<endl;}
char *nume;
};
Constructorul Persoana(char *) poate fi utilizat pentru:
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=&b;
p->m();
p->v();
}
Care expresie este corecta:
c. p->m();
------------------------------------------------------------------------------------------------------------------------------------
5. Metodele statice:
7. Derivarea este:
class A{
public:
9. Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este efectul apelarii metodei Create(), ce varianta a functiei se va apela
si ce se afiseaza pe ecran?
class A
{
protected:
int dim;
public:
A(){ cout<<"A::A()"<<endl;}
virtual ~A(){ cout<<"A::~A()"<<endl;}
void Create(int d = 0x10)
{
dim = d;
cout<<"A::Create("<<dim<<")"<<endl;
}
};
class B: public A
{
public:
B(){ cout<<"B::B()"<<endl;}
virtual ~B(){ cout<<"B::~B()"<<endl;}
A* p = new B();
p->Create( );
delete p;
return 0;
}
c. A::Create(16)
------------------------------------------------------------------------------------------------------------------------------------
10. 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;
}
d.
S::~S()
C2::~C2()
C1::~C1()
------------------------------------------------------------------------------------------------------------------------------------
11. Analizati cu atentie urmatorul fragment de cod sursa. Se doreste introducerea in definitia sablonului de clasa Vector a unui operator de
extractie care sa permita o extracie inlantuita, precizati care este declaratia corecta ?
b.
template<typename T, int dim>
friend istream & operator>>(istream &, Vector<T,dim>&);
------------------------------------------------------------------------------------------------------------------------------------
12. Analizati cu atentie codul urmator. Care este ordinea de apel a destructorilor?
class Shape
{
public:
Shape() { cout<<"Shape::Shape"<<endl;}
virtual ~Shape(){ cout<<"Shape::~Shape"<<endl; }
};
class Point:public Shape
{
int x,y;
public:
Point(){ cout<<"Point::Point"<<endl;}
virtual ~Point(){ cout<<"Point::~Point"<<endl; }
};
class Circle:public Point
{
int radius;
public:
Circle(int r = 0) { cout<<"Circle::Circle"<<endl;}
virtual ~Circle() { cout<<"Circle::~Circle"<<endl;}
};
int main()
{
Shape * v[10];
int n = 0;
v[n++] = new Circle();
v[n++] = new Point();
d.
Circle::~Circle
Point::~Point
Shape::~Shape
Point::~Point
Shape::~Shape
Întrebarea nr. 1
• 5 din 5 puncte
Programarea cu template este:
Answer
b.
o metoda de a
Selected Answer: dezvolta
sabloane de
clase si
functii
1. Întrebarea nr. 2
• 0 din 5 puncte
Fie urmatoarea specificare de clasa:
class AbstractList{
public:
1. Întrebarea nr. 3
• 0 din 5 puncte
Fie urmatorul program:
class A
{
public:
void m(){cout<<"A:m
()"<<endl;};
virtual void v(){cout<<"A:v
()"<<endl;};
};
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();
Selected Answer: b.
p=&b;
1. Întrebarea nr. 4
• 5 din 5 puncte
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;
};
1. Întrebarea nr. 5
• 5 din 5 puncte
Metodele statice:
Answer
d.
Selected Answer: lucreaza cu
datele statice
ale clasei
1. Întrebarea nr. 6
• 5 din 5 puncte
Programarea generica este:
Answer
c.
Selected Answer: o metoda de a
reutiliza codul
sursa
Programarea generica este:
Answer
c.
Selected Answer: o metoda de a
reutiliza codul
sursa
1. Întrebarea nr. 7
• 0 din 5 puncte
Fie programul :
class Cerc{
public:
Cerc(float r):raza(r){}
float getRaza(){return
raza;}
void operator++(){raza++;}
private:
float raza;
};
class Cilindru: public Cerc{
public:
Cilindru(float raza, float
inaltime):Cerc(raza), inaltime
(inaltime){};
virtual void operator++()
{inaltime++;}
float getInaltime(){return
inaltime;}
private:
float inaltime;
};
void main()
{
Cerc *pc;
Cilindru c(1,5);
pc=&c; ++ *pc;
cout<<pc->getRaza()<<"
"<<c.getInaltime()<<endl;
getch();
}
Programul afiseaza :
Answer
Selected Answer: a.
1 6
1. Întrebarea nr. 8
• 5 din 5 puncte
Fie urmatorul program:
class A{
public:
1. Întrebarea nr. 9
• 0 din 10 puncte
Programarea cu template permite:
Answer
b.
Selected Answer: reutiliza codul
binar
1. Întrebarea nr. 10
• 0 din 10 puncte
};
class R
{
public:
R(){ cout<<"R::R()"<<endl;}
};
};
R* f = new File();
return 0;
}
Answer
c.
Selected Answer: R::R()
File::File()
1. Întrebarea nr. 11
• 20 din 20 puncte
//alegeti declaratia
operatorului de acces indexat
};
Answer
e.
Selected Answer: T &operator[]
(int i);
1. Întrebarea nr. 12
• 20 din 20 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Deduceti ce calcul efectueaza sablonul urmator si se va afisa pe ecran?
*
Întrebarea nr. 1
Incorrect
Utilizarea metodelor iniline duce la:
Answer
Selected Answer: a.
reducerea codului compilat
*
Întrebarea nr. 2
Incorrect
Fie urmatorul program:
class C{
public:
C(int n=0, int v[]);
friend ostream& operator<<(ostream &o, const C&);
private:
int dim;
int *pi;
};
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:
Answer
Selected Answer: b.
-100 2 3
*
Întrebarea nr. 3
Incorrect
Programarea generica este:
Answer
Selected Answer: c.
o metoda de a reutiliza codul compilat
*
Întrebarea nr. 4
5 din 5 puncte
Correct
Fie urmatorul program:
class C{
public:
C(int n=0, int v[]);
friend ostream& operator<<(ostream &o, const C&);
private:
int dim;
int *pi;
};
void main(){
int a[]={1,2,3}, b[]={10,20};
C x(3,a),y(2, b);
x=y;
b[0]= -100;
cout<<x<<endl;
}
Programul afiseaza:
Answer
Selected Answer: d.
-100 20
*
Întrebarea nr. 5
Incorrect
Polimorfismul:
Answer
Selected Answer: c.
presupune existenta unor functii cu mai multe prototipuri
*
Întrebarea nr. 6
5 din 5 puncte
Correct
Programarea cu template permite:
Answer
Selected Answer: a.
reutiliza codul sursa
*
Întrebarea nr. 7
Incorrect
Mostenirea este:
Answer
Selected Answer: d.
o metoda de a reutiliza codul sursa
*
Întrebarea nr. 8
Incorrect
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=&b;
p->m();
p->v();
}
Care expresie este corecta:
Answer
Selected Answer: b.
p->f();
*
Întrebarea nr. 9
Incorrect
Programarea cu sabloane permite:
Answer
Selected Answer: a.
mostenirea multipla
*
Întrebarea nr. 10
Incorrect
Programarea cu template permite:
Answer
Selected Answer: a.
reutiliza codul compilat
*
Întrebarea nr. 11
Incorrect
Analizati cu atentie urmatorul fragment de cod sursa. Cate clase si cate obiecte avem in programul urmator ?
return 0;
}
Answer
*
Întrebarea nr. 12
Incorrect
Analizati cu atentie codul urmator. Care este modul de actiune a destructorilor?
class Shape
{
public:
Shape() { cout<<"Shape::Shape"<<endl;}
~Shape(){ cout<<"Shape::~Shape"<<endl; }
};
class Point:public Shape
{
int x,y;
public:
Point(){ cout<<"Point::Point"<<endl;}
virtual ~Point(){ cout<<"Point::~Point"<<endl; }
};
class Circle:public Point
{
int radius;
public:
Circle(int r = 0) { cout<<"Circle::Circle"<<endl;}
virtual ~Circle() { cout<<"Circle::~Circle"<<endl;}
};
int main()
{
Shape * v[10];
int n = 0;
v[n++] = new Circle();
v[n++] = new Point();
• Întrebarea nr. 1
5 din 5 puncte
• Întrebarea nr. 2
0 din 5 puncte
Metodele statice:
Answer
b.
Selected nu
Answer: apartin
clasei
• Întrebarea nr. 3
0 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual void v
(){cout<<"virtual
void A::v()"<<endl;}
virtual void v(int
i)
{i++;cout<<"virtual
void A::v
(int)"<<endl;}
};
class B:public A{
public:
// 1.
supraincarcare
metoda statica
int s()
{cout<<"int B::s
()"<<endl; return
1;}
// 2.
specializare metoda
statica
void s(int i)
{i++;cout<<"void
B::s(int)"<<endl; }
// 3.
specializare metoda
virtuala
virtual void v(int
i){i+
+;cout<<"virtual
void B::v
(int)"<<endl;}
// 4.
supraincarcare
metoda virtuala,
virtual int
v(){cout<<"int B::v
()"<<endl; return
1;}
};
Programarea cu sabloane
permite:
Answer
d.
scrierea
Selected de
Answer: algoritm
i
generici
• Întrebarea nr. 5
0 din 5 puncte
Mostenirea este:
Answer
b.
o metoda
Selected de a
Answer: reutiliz
a codul
sursa
• Întrebarea nr. 6
0 din 5 puncte
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();
• Întrebarea nr. 7
0 din 5 puncte
Fie urmatorul
program:
class C{
public:
C(int n=0, int
v[]);
friend ostream&
operator<<(ostream
&o, const C&);
private:
int dim;
int *pi;
};
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:
Answer
Selected a.
Answer: -100 2 3
• Întrebarea nr. 8
5 din 5 puncte
• Întrebarea nr. 9
0 din 10 puncte
Programarea cu sabloane
permite:
Answer
c.
scrierea
Selected de
Answer: algoritm
i
genetici
• Întrebarea nr. 10
0 din 10 puncte
}
~Sir(){ if (p) delete[]
p; }
void Print(){ cout << p
<< endl; }
};
Analizati cu atentie urmatorul fragment
de cod sursa. Alegeti observatia corecta
si precizati ce se va afisa pe ecran?
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; }
void Print(){ cout << p
<< endl; }
};
• Întrebarea nr. 11
0 din 20 puncte
};
class Derivat:public Baza
{
public:
Derivat(){ cout<<"D::D
()"<<endl;}
virtual ~Derivat()
{ cout<<"D::~D()"<<endl;}
};
int main (int argc, char* argv
[])
{
• Întrebarea nr. 12
0 din 20 puncte
b.
Circle::~Circle
Point::~Point
Shape::~Shape
Selected Answer:
Point::~Point
Shape::~Shape
• Întrebarea nr. 1
5 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual void v
(){cout<<"virtual
void A::v()"<<endl;}
virtual void v(int
i)
{i++;cout<<"virtual
void A::v
(int)"<<endl;}
};
class B:public A{
public:
// 1.
supraincarcare
metoda statica
int s()
{cout<<"int B::s
()"<<endl; return
1;}
// 2.
specializare metoda
statica
void s(int i)
{i++;cout<<"void
B::s(int)"<<endl; }
// 3.
specializare metoda
virtuala
virtual void v(int
i){i+
+;cout<<"virtual
void B::v
(int)"<<endl;}
// 4.
supraincarcare
metoda virtuala,
virtual int
v(){cout<<"int B::v
()"<<endl; return
1;}
};
• Întrebarea nr. 2
0 din 5 puncte
Derivarea este:
Answer
b.
o metoda
de a
dezvolta
interfet
Selected e pe
Answer:
baza
unor
clase
Derivarea este:
Answer
b.
o metoda
de a
dezvolta
interfet
Selected e pe
Answer:
baza
unor
clase
abstract
e
• Întrebarea nr. 3
5 din 5 puncte
• Întrebarea nr. 4
0 din 5 puncte
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
b.
Selected Construirea
Answer: de siruri de
caractere
• Întrebarea nr. 5
0 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual
void v()
{cout<<"virtual void
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
d.
Definiti
a
virtual
void v
(int i)
este
Selected incorect
Answer:
a
deoarece
exista o
definiti
e pentru
metoda
v.
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
d.
Definiti
a
virtual
void v
(int i)
este
Selected incorect
Answer:
a
deoarece
exista o
definiti
e pentru
metoda
v.
• Întrebarea nr. 6
0 din 5 puncte
Metodele statice:
Answer
a.
pot fi
apelate
Selected doar
Answer:
pentru
obiecte
statice
• Întrebarea nr. 7
0 din 5 puncte
• Întrebarea nr. 8
5 din 5 puncte
• Întrebarea nr. 9
10 din 10 puncte
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;
}
Answer
d.
Selected S::~S()
Answer: C2::~C2()
C1::~C1()
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;
}
Answer
d.
Selected S::~S()
Answer: C2::~C2()
C1::~C1()
• Întrebarea nr. 10
10 din 10 puncte
• Întrebarea nr. 11
0 din 20 puncte
//alegeti declaratia
operatorului de insertie in
flux
};
Answer
d.
friend
void operato
Selected
r>>(istream
Answer:
&,
Vector<T,dim
>&);
• Întrebarea nr. 12
20 din 20 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este ordinea de apel a destructorilor. Ce se va afisa pe ecran?
class W
{
public:
~W(){ cout<<"W::~W()"<<endl;}
};
class R
{
public:
~R(){ cout<<"R::~R()"<<endl;}
};
class File: public W, public R
{
public:
~File(){ cout<<"File::~File()"<<endl;}
};
int main (int argc, char* argv[])
{
R* f = new File();
delete f;
return 0;
}
Answer
c.
R::~R()
Selected Answer:
• Întrebarea nr. 1
0 din 5 puncte
Derivarea este:
Answer
c.
o metoda
Selected de a
reutiliz
Answer: a codul
executab
il
• Întrebarea nr. 2
5 din 5 puncte
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=&b;
p->m();
p->v();
}
Care expresie este
corecta:
Answer
Selected c.
Answer: p->m();
• Întrebarea nr. 3
5 din 5 puncte
Fie urmatorul
program:
class C{
public:
C(int n=0, int
v[]);
friend ostream&
operator<<(ostream
&o, const C&);
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);
x=y;
b[0]= -100;
cout<<x<<endl;
}
Programul afiseaza:
Answer
Selected d.
Answer: -100 20
• Întrebarea nr. 4
5 din 5 puncte
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();
• Întrebarea nr. 5
5 din 5 puncte
Programarea cu sabloane
permite:
Answer
a.
scrierea
Selected de
Answer: algoritm
i
generici
• Întrebarea nr. 6
5 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual
void v()
{cout<<"virtual void
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
c.
Definiti
a void s
Selected (int i)
suprainc
Answer: arca
definiti
a void s
()
• Întrebarea nr. 7
5 din 5 puncte
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;
}
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:
Answer
Selected b.
Answer: 10 20
• Întrebarea nr. 8
5 din 5 puncte
Mostenirea este:
Answer
d.
o metoda
Selected de a
Answer: reutiliz
a codul
compilat
• Întrebarea nr. 9
0 din 10 puncte
Programarea cu template
permite:
Answer
a.
construi
rea
Selected clase
Answer: derivate
din
clase
baza
• Întrebarea nr. 10
0 din 10 puncte
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
destructorilor. Ce se va
afisa pe ecran?
class W
{
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
destructorilor. Ce se va
afisa pe ecran?
class W
{
public:
virtual ~W()
{ cout<<"W::~W
()"<<endl;}
};
class R
{
public:
virtual ~R()
{ cout<<"R::~R
()"<<endl;}
};
class File: public
W, public R
{
public:
virtual ~File
()
{ cout<<"File::~File
()"<<endl;}
};
int main (int argc,
char* argv[])
{
R* f = new
File();
delete f;
return 0;
}
Answer
Selected b.
Answer: R::~R()
• Întrebarea nr. 11
20 din 20 puncte
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
virtual ~Baza
(){ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
{ cout<<"D::~D
()"<<endl;}
};
int main (int argc,
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
e.
B::B()
Selected
D::D()
Answer:
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
virtual ~Baza
(){ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
{ cout<<"D::~D
()"<<endl;}
};
int main (int argc,
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
e.
B::B()
Selected
D::D()
Answer:
D::~D()
B::B()
• Întrebarea nr. 12
20 din 20 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Precizati care este efectul apelarii metodei Create(), ce varianta a functiei se va apela si
ce se afiseaza pe ecran?
class Baza2
{
public:
Baza2(){ Create(); }
~Baza2(){ Create(); }
void Build(){Create(); }
Întrebarea nr. 1
0 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual
void v()
{cout<<"virtual void
A::v()"<<endl;}
virtual void v(int
i){i+
+;cout<<"virtual
void A::v
(int)"<<endl;}
};
Care afirmatie este
corecta:
Answer
b.
Definiti
a void s
(int i)
este
Selected incorect
a
Answer: deoarece
exista o
definiti
e pentru
metoda
s.
! Întrebarea nr. 2
0 din 5 puncte
Programarea cu template
permite:
Answer
a.
construi
rea
Selected clase
Answer: derivate
din
clase
baza
! Întrebarea nr. 3
5 din 5 puncte
! Întrebarea nr. 4
5 din 5 puncte
! Întrebarea nr. 5
0 din 5 puncte
class AbstractList{
public:
virtual void
erase()=0;
virtual void
put(AbstractElem*
ae)=0;
virtual
AbstractElem* get()
=0;
virtual int
isEmpty()=0;
virtual int
isFull()=0;
};
! Întrebarea nr. 6
0 din 5 puncte
class AbstractList{
public:
virtual void
Create()=0;
virtual void
put(AbstractElem*
ae){};
virtual
AbstractElem* get()
{};
virtual int
isEmpty(){};
virtual int
isFull(){};
};
class AbstractList{
public:
virtual void
Create()=0;
virtual void
put(AbstractElem*
ae){};
virtual
AbstractElem* get()
{};
virtual int
isEmpty(){};
virtual int
isFull(){};
};
! Întrebarea nr. 7
5 din 5 puncte
Metodele statice:
Answer
c.
lucreaza
Selected cu
datele
Answer: statice
ale
clasei
! Întrebarea nr. 8
0 din 5 puncte
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual void v
(){cout<<"virtual
void A::v()"<<endl;}
virtual void v(int
i)
{i++;cout<<"virtual
void A::v
(int)"<<endl;}
};
class B:public A{
public:
// 1.
supraincarcare
metoda statica
int s()
{cout<<"int B::s
()"<<endl; return
1;}
// 2.
specializare metoda
statica
void s(int i)
{i++;cout<<"void
B::s(int)"<<endl; }
// 3.
specializare metoda
virtuala
virtual void v(int
i){i+
+;cout<<"virtual
void B::v
Fie urmatorul
program:
class A{
public:
void s()
{cout<<"void A::s
()"<<endl;}
void s(int i)
{i++;cout<<"void
A::s(int)"<<endl; }
virtual void v
(){cout<<"virtual
void A::v()"<<endl;}
virtual void v(int
i)
{i++;cout<<"virtual
void A::v
(int)"<<endl;}
};
class B:public A{
public:
// 1.
supraincarcare
metoda statica
int s()
{cout<<"int B::s
()"<<endl; return
1;}
// 2.
specializare metoda
statica
void s(int i)
{i++;cout<<"void
B::s(int)"<<endl; }
// 3.
specializare metoda
virtuala
virtual void v(int
i){i+
+;cout<<"virtual
void B::v
(int)"<<endl;}
// 4.
supraincarcare
metoda virtuala,
virtual int
v(){cout<<"int B::v
()"<<endl; return
1;}
};
! Întrebarea nr. 9
10 din 10 puncte
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
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;
}
Answer
d.
Selected C1::C1()
Answer: C2::C2()
S::S()
! Întrebarea nr. 10
0 din 10 puncte
Analizati cu atentie
urmatorul fragment de
cod sursa. Alegeti
observatia corecta si
precizati ce se va afisa
pe ecran?
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; }
void Print()
{ cout << p <<
endl; }
};
len = strlen(s);
p
= new char[len+1];
strcpy_s(p, len+1,
s);
}
}
~Sir(){ if (p)
delete[] p; }
void Print()
{ cout << p <<
endl; }
};
! Întrebarea nr. 11
0 din 20 puncte
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
~Baza()
{ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
Analizati cu atentie
urmatorul fragment de
cod sursa. Precizati care
este ordinea de apel a
constructorilor si
destructorilor. Ce se va
afisa pe ecran?
class Baza
{
public:
Baza(){
cout<<"B::B
()"<<endl;}
~Baza()
{ cout<<"B::~B
()"<<endl;}
};
class Derivat:public
Baza
{
public:
Derivat()
{ cout<<"D::D
()"<<endl;}
~Derivat()
{ cout<<"D::~D
()"<<endl;}
};
int main (int argc,
char* argv[])
{
Baza *s = new
Derivat();
delete s;
return 0;
}
Answer
a.
Selected
D::D()
Answer:
D::~D()
! Întrebarea nr. 12
0 din 20 puncte
Analizati cu atentie urmatorul fragment de cod sursa. Deduceti ce calcul efectueaza sablonul urmator si se va afisa pe ecran?
Selected Answer:
ntrebarea nr. 1
0 din 5 puncte
Întrebarea nr. 2
5 din 5 puncte
class AbstractList{
public:
virtual void
Create()=0;
virtual void
INCLUDEPICTURE "http:// put(AbstractElem*
94.176.181.35/images/ci/ ae){};
icons/grade-correct_u.gif" \* virtual
MERGEFORMATINET AbstractElem* get()
{};
virtual int
isEmpty(){};
virtual int
isFull(){};
};
Întrebarea nr. 3
0 din 5 puncte
Întrebarea nr. 4
5 din 5 puncte
Answer
Selected Answer:
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/check.gif" \* MERGEFORMATINET c.
o metoda de a dezvolta clase concrete
pe baza unor clase abstracte
Întrebarea nr. 5
5 din 5 puncte
Întrebarea nr. 6
0 din 5 puncte
Întrebarea nr. 7
5 din 5 puncte
class A{
public:
void s(){cout<<"void A::s()"<<endl;}
void s(int i){i++;cout<<"void A::s(int)"<<endl; }
virtual void v(){cout<<"virtual void A::v()"<<endl;}
virtual void v(int i){i++;cout<<"virtual void A::v(int)"<<endl;}
};
Care afirmatie este corecta:
Answer
Selected Answer:
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/check.gif" \* MERGEFORMATINET b.
Definitia virtual void v()supraincarca
definitia virtual void v(int i)
Întrebarea nr. 8
0 din 5 puncte
class Complex;
class Punct{
public:
Punct(float x=0,
float y=0):x(x),y(y)
{}
operator Complex
();
operator float()
{return x;}
private:
INCLUDEPICTURE "http:// float x,y;
94.176.181.35/images/ci/ };
icons/grade-incorrect_u.gif" \* class Complex{
MERGEFORMATINET 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;
};
Întrebarea nr. 9
0 din 10 puncte
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/grade-incorrect_u.gif" \* MERGEFORMATINET Analizati cu atentie urmatorul fragment de cod sursa. Alegeti
observatia corecta si precizati ce se va afisa pe ecran?
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; }
void Print(){ cout << p << endl; }
};
Întrebarea nr. 10
0 din 10 puncte
Întrebarea nr. 11
20 din 20 puncte
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/grade-correct_u.gif" \* MERGEFORMATINET Analizati cu atentie codul urmator. Care este ordinea de apel a
destructorilor?
class Shape
{
public:
Shape() { cout<<"Shape::Shape"<<endl;}
virtual ~Shape(){ cout<<"Shape::~Shape"<<endl; }
};
class Point:public Shape
{
int x,y;
public:
Point(){ cout<<"Point::Point"<<endl;}
virtual ~Point(){ cout<<"Point::~Point"<<endl; }
};
class Circle:public Point
{
int radius;
public:
Circle(int r = 0) { cout<<"Circle::Circle"<<endl;}
virtual ~Circle() { cout<<"Circle::~Circle"<<endl;}
};
int main()
{
Shape * v[10];
int n = 0;
v[n++] = new Circle();
v[n++] = new Point();
Întrebarea nr. 12
20 din 20 puncte
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/grade-correct_u.gif" \* MERGEFORMATINET 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; }
};
while(true)
{
Sir * ps = new Sir("Programare in C++");
delete ps;
}
return 0;
}
Answer
Selected Answer:
INCLUDEPICTURE "http://94.176.181.35/images/ci/icons/check.gif" \* MERGEFORMATINET a.
codul este corect , se compileaza dar ruleaza la infinit