0% found this document useful (0 votes)
49 views8 pages

Examen Program Are II - Grila2

The document contains 5 multiple choice questions about C++ classes and inheritance. Each question provides code implementations and asks which output would be displayed when the main function is executed.

Uploaded by

Razvan Iorga
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views8 pages

Examen Program Are II - Grila2

The document contains 5 multiple choice questions about C++ classes and inheritance. Each question provides code implementations and asks which output would be displayed when the main function is executed.

Uploaded by

Razvan Iorga
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 8

Examen Programare II Grila 2A

1. Studiai urmtoarea 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;
}

Ce se va afia pe ecran dup execuia funciei main()?


a) 3 3 4 3
b) 2 2 3 2
c) 3 4 5 3
d) 3 3 4 4

2. Studiai urmtoarea 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 afia pe ecran dup execuia funciei main()?
a)
b)
A()
A()
A(A&)
B(A a)
B(A a)

c)

d)
A()
A(A&)
A(A&)
B(A a)

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

3. Studiai urmtoarea 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 afia pe ecran dup execuia funciei main()?

a) Programul va avea erori de compilare


b)
pentru ca elementele tabloului nu au acelai tip ClasaB.f()
(Clasa B).
ClasaA.g()
ClasaA.h()
c) Nu se poate apela metoda h() pentru ca ea
d)
nu face parte din interfaa comuna ambelor
ClasaB.f()
clase.
ClasaB.g()
ClasaA.h()
4. Studiai urmtoarea 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;}
};

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 afia pe ecran dup execuia funciei 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()
B()
C(int)
C::f()
C::g()
B:h()

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

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

5. Studiai urmtoarea 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;

};

}
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 afia pe ecran dup execuia funciei 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

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

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

You might also like