Sunteți pe pagina 1din 8

Examen Programare II – Grila 2A

1. Studiaţi următoarea implementare:

class Complex {
double re, im;
public:
static int nr;
Complex(double re=0, double im=0): re(re), im(im){
nr++;
}
Complex(const Complex &c): re(c.re), im(c.im) {
nr++;
}
~Complex() {
nr--;
}
Complex operator+(Complex c) {
cout << nr << '\t';

Complex rez;
rez.re = re + c.re;
rez.im = im + c.im;

cout << nr << '\t';


return rez;
}
};
int Complex::nr = 0;
int main()
{
Complex c1(-2, 3), c2(6, 9), c3;
cout << Complex::nr << '\t';
c3 = c1 + c2;
cout << Complex::nr << '\t';

_getch();
return 0;
}

1
Ce se va afişa pe ecran după execuţia funcţiei main()?
a) 3 3 4 3 b) 2 2 3 2
c) 3 4 5 3 d) 3 3 4 4

2. Studiaţi următoarea implementare:


class A{
public:
A() {
cout << "A()" << endl;
}
A(const A& a) {
cout << "A(A&)" << endl;
}
};

class B{
A a1;
public:
B(A a): a1(a) {
cout << "B(A a)" << endl;
}
};

int main() {
A a;
B b(a);
_getch();
}

Ce se va afişa pe ecran după execuţia funcţiei main()?


a) b)
A() A()
A(A&) B(A a)
B(A a)

2
c) d)
A() A()
A(A&) A()
A(A&) A(A&)
B(A a) A(A&)
B(A a)

3. Studiaţi următoarea implementare:


class ClasaB{
public:
void f() {
cout << "ClasaB.f()" << endl;
}
void g() {
cout << "ClasaB.g()" << endl;
}
};

class ClasaA: public ClasaB{


public:
void f() {
cout << "ClasaA.f()" << endl;
}
void g() {
cout << "ClasaA.g()" << endl;
}
void h() {
cout << "ClasaA.h()" << endl;
}
};

int main()
{
ClasaB *tab[2] = {
new ClasaB(), new ClasaA()
};
tab[0]->f();
tab[1]->g();

((ClasaA *)tab[1])->h();

delete tab[0];
delete tab[1];
_getch();
return 0;
}

Ce se va afişa pe ecran după execuţia funcţiei main()?

3
a) Programul va avea erori de compilare b)
pentru ca elementele tabloului nu au acelaşi tip ClasaB.f()
(Clasa B). ClasaA.g()
ClasaA.h()
c) Nu se poate apela metoda h() pentru ca ea d)
nu face parte din interfaţa comuna ambelor ClasaB.f()
clase. ClasaB.g()
ClasaA.h()

4. Studiaţi următoarea implementare:


class A{
protected:
int x;
public:
A() {
x = 0;
cout << "A()" << endl;
}
A(int xx) {x = xx;
cout << "A(int)" << endl;
}
virtual ~A() {
cout << "~A()" << endl;
_getch();
}
virtual void f() {cout << "A::f()" << endl;}
virtual void g() {cout << "A::g()" << endl;}
void h() {cout << "A:h()" << endl;}
};

class B: public A{
private:
int z;
public:
B(){
z = 0;
cout << "B()" << endl;
}
B(int x): A(x) {
z = 2 * x;
cout << "B(int)" << endl;
}
~B() {
cout << "~B()" << endl;
}

void f() {cout << "B::f()" << endl;}


void g() {cout << "B::g()" << endl;}
void h() {cout << "B:h()" << endl;}

};

4
class C: public B {
protected:
int y;
public:
C(){
y = 0;
cout << "C()" << endl;
}
C(int x) {
y = x;
cout << "C(int)" << endl;
}
~C() {
cout << "~C()" << endl;
}

void f() {cout << "C::f()" << endl;}


void g() {cout << "C::g()" << endl;}
void h() {cout << "C::h()" << endl;}

};

int main() {
A* pa = new C(5);
pa -> f();
pa -> g();
pa -> h();
delete pa;

B * pb = new C(6);
pb -> f();
pb -> g();
pb -> h();

_getch();
return 0;
}

Ce se va afişa pe ecran după execuţia funcţiei main()?


a) b)
A() A()
B() B()
C(int) C(int)
C::f() C::f()
C::g() C::g()
A:h() A:h()
~C() ~C()
~B() ~B()
~A() ~A()

5
A() A()
B() B()
C(int) C(int)
C::f() C::f()
C::g() C::g()
B:h() B:h()
~C()
~B()
~A()
c) d)
A() A()
B() B()
C(int) C(int)
C::f() C::f()
C::g() C::g()
A:h() A:h()
~C() ~C()
~B() ~B()
~A() ~A()
A() A()
B() B()
C(int) C(int)
B::f() B::f()
B::g() B::g()
B:h() B:h()
~C()
~B()
~A()

5. Studiaţi următoarea implementare:


class A{
protected:
int x;
public:
A() {x = 0; cout << "A()" << endl;}
A(int xx) {x = xx; cout << "A(int)" << endl;}
~A() {cout << "~A()" << endl;_getch();}
};

class B: public A{
public:
B(){
cout << "B()" << endl;

6
}
B(int x): A(x) {
cout << "B(int)" << endl;
}
~B() {
cout << "~B()" << endl;
}
};

class C: public A{
public:
C(){
cout << "C()" << endl;
}
C(int x): A(x) {
cout << "C(int)" << endl;
}
~C() {
cout << "~C()" << endl;
}
};

class D: public B, public C{


public:
D(int x): C(x) {
cout << "D(int)" << endl;
}
~D() {
cout << "~D()" << endl;
}
};

int main() {
D d(5);
_getch();
return 0;
}

Ce se va afişa pe ecran după execuţia funcţiei main()?


a) b)
A() A()
C(int) B()
B() A(int)
D(int) C(int)
~D() D(int)
~B() ~D()
~C() ~C()
~A() ~A()
~B()

7
~A()
c) d)
A(int) A()
C(int) B()
A() C(int)
B() D(int)
D(int) ~D()
~D() ~C()
~B() ~B()
~A() ~A()
~C()
~A()

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