Documente Academic
Documente Profesional
Documente Cultură
Studiu Caz 1
Analizați codul următor (constructor, destructor, excepții, obiecte). Care este rezultatul afişat pe
ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (constructor, destructor, excepții, obiecte).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
int m_n;
int m;
cin >> m;
return 0;
}
REZULTAT:
Avem o lista de initializare cu verificare pe n, daca este 0 arunca
exceptie.
Va afisa din destructor 231
DONE
Studiu Caz 2
Analizați codul următor (constructor, şabloane, obiecte). Care este rezultatul afişat pe ecran în urma
executării programului?
#include "stdafx.h"
using namespace std;
Page 1 of 15
OOP - PARTEA 2 STUDII DE CAZ
/*
Analizați codul următor (constructor, şabloane, obiecte).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
public:
A() { std::cout << N; }
private:
A<N‐1> m_a;
};
template<> class A<0> {
public:
A() { std::cout << 'A'; }
};
int main() {
A<4>();
int m;
cin >> m;
return 0;
}
REZULTAT:
A1234
DONE
Studiu Caz 3
Analizați codul următor (clase, constructor, destructor, obiecte). Care este rezultatul afişat pe ecran
în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructor, destructor, obiecte).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
A(int n = 2) : m_i(n) {}
~A() { std::cout << m_i; }
protected:
int m_i;
Page 2 of 15
OOP - PARTEA 2 STUDII DE CAZ
};
class B : public A {
public:
B(int n) : m_x(m_i + 1), m_a(n) {}
public:
~B() { std::cout << m_i; ‐‐m_i; }
int main() {
B b(5);
int m;
cin >> m;
return 0;
}
REZULTAT:
Vom afisa 2531
MEMO
Studiu Caz 4
Analizați codul următor (clase constructori , câmpuri statice, obiecte). Care este rezultatul afişat pe
ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase constructori , câmpuri statice, obiecte).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A {
public:
A(int n = 0) : m_i(n) { std::cout << m_i; }
protected:
int m_i;
};
class B : public A {
public:
B(int n) :m_j(n), m_a(‐‐m_j), m_b() { std::cout << m_j; }
private:
Page 3 of 15
OOP - PARTEA 2 STUDII DE CAZ
int m_j;
A m_a;
A m_b;
static A m_c;
};
A B::m_c(3);
int main() {
B b(2);
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa
30101
Studiu Caz 5
Analizați codul următor (clase, constructori , operatorii new şi delete, obiecte). Care este rezultatul
afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori , operatorii new şi delete, obiecte).
*/
#include <iostream>
class A{
public:
B(int n = 5) :m_a(new A[2]), m_x(++m_i) { std::cout << m_i; }
~B() { delete[] m_a; }
int main() {
B b;
int m;
cin >> m;
Page 4 of 15
OOP - PARTEA 2 STUDII DE CAZ
return 0;
}
REZULTAT:
Va afisa 02002
Studiu Caz 6
Analizați codul următor (clase, constructori, destructori, excepții, obiecte). Care este rezultatul afişat
pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, excepții, obiecte).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
A(int n) :m_n(n) { std::cout << "A"<<m_n; }
~A() { std::cout << "D"<< m_n; }
int f(int n) {
if (1 == n) { throw 0; }
A l(n);
int main() {
try {
int r = f(3); A a(r);
}
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 32230
(A3A2D2D3E0)
Page 5 of 15
OOP - PARTEA 2 STUDII DE CAZ
Studiu Caz 7
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a obiectelor,
virtualizare). Care este rezultatul afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a
obiectelor, virtualizare).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A {
public:
virtual ~A() { f(); }
public:
virtual void f() const {
std::cout << "A"<< 1;
}
};
class B : public A {
public:
~B() { f(); }
private:
virtual void f() const { std::cout <<"B" << 2; }
};
int main() {
A* a = new B;
delete a;
std::cout << std::endl;
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 21 (2 din destructorul din B si 1 din cel din A)
Studiu Caz 8
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a obiectelor, exceptii).
Care este rezultatul afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a
obiectelor, exceptii).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A {
Page 6 of 15
OOP - PARTEA 2 STUDII DE CAZ
public:
A(int n) { if (0 == n) { throw "Examen"; } }
};
int main() {
A *p0 = 0, *p1 = 0, *p2 = 0;
try {
p1 = new A(1); p0 = new A(0); p2 = new A(2);
}
catch (...) { std::cout << 3; }// orice exceptie
std::cout << ((0 != p1) ? 1 : 0); std::cout << ((0 != p0) ? 1 : 0);
std::cout << ((0 != p2) ? 1 : 0) << std::endl; delete p1; delete p0; delete p2;
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 3100
Studiu Caz 9
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a obiectelor, exceptii).
Care este rezultatul afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, gestiunea dinamică a
obiectelor, exceptii).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class C{
public:
private: int i;
};
int main() {
C(2);
const C& c = C(1);
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 2716
Page 7 of 15
OOP - PARTEA 2 STUDII DE CAZ
Studiu Caz 10
Analizați codul următor (clase, constructori, destructori, referințe, virtualizare).
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, referințe, virtualizare).
*/
#include <iostream>
class B{
public:
virtual int shift(int n = 2) const { return n << 2; }
};
class D : public B {
public:
int shift(int n = 3) const { return n << 3; }
};
int main() {
const D d;
const B* b = &d;
std::cout << b ‐>shift();
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 16 (2 zecimal shiftat 3 biti la stanga)
Studiu Caz 11
Analizați codul următor (clase, constructori, destructori, referințe, virtualizare). Care este rezultatul
afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori, destructori, referințe, virtualizare).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
Page 8 of 15
OOP - PARTEA 2 STUDII DE CAZ
public:
void f(int n) { std::cout << (n << 1); }
void f(int n) const { std::cout << n + 1; }
};
int main() {
const A a; B b;
A& c = b;
const A* d = &b;
a.f(2);
b.f(2);
c.f(1); d‐>f(1);
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 2421
Studiu Caz 12
Analizați codul următor (clase, constructori, destructori, alocare / eliberare,virtualizare). Care este
rezultatul afişat pe ecran în urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (clase, constructori,
destructori, alocare / eliberare,
virtualizare). Care este rezultatul afişat pe
ecran în urma executării programului?
*/
#include <iostream>
class A {
public:
A() { f(); }
virtual ~A() {}
public:
virtual void f() const { std::cout << 1; }
};
class B : public A {
public:
B() { f(); }
private:
virtual void f() const {
std::cout <<
2;
Page 9 of 15
OOP - PARTEA 2 STUDII DE CAZ
}
};
int main() {
A* a = new B;
delete a;
std::cout << std::endl;
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 12
Studiu Caz 13
Analizați codul următor (cu ierarhie de clase). Care este rezultatul afişat pe ecran în urma executării
programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (cu ierarhie de clase).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class E{
typedef int INT;
};
int main() {
std::cout << sizeof(E) << " " << sizeof(D) << " " << sizeof(C) << std::endl;
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa 111
Studiu Caz 14
Analizați codul următor (cu ierarhie de clase şi virtualizare). Care este rezultatul afişat pe ecran în
urma executării programului?
#include "stdafx.h"
Page 10 of 15
OOP - PARTEA 2 STUDII DE CAZ
#include <iostream>
class B {
b‐>Q();
public:
delete b;
B() { P(); } return 0;
~B() { P(); }
}
void Q() { P(); }
virtual void P(int x = 0x10) { std::cout << "U::P:x = " << x << std::endl; }
};
class C : public B {
public:
C() {}
virtual void P(int x = 0x100) { std::cout << "V::P:x = " << x << std::endl; }
};
int main() {
B *b = new C();
b‐>Q();
delete b;
int m;
cin >> m;
return 0;
}
REZULTAT:
U::P:x = 16
V::P:x = 16
U::P:x = 16
Studiu Caz 15
Analizați codul următor (cu clase şi virtualizare). Care este rezultatul afişat pe ecran în urma
executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (cu clase şi virtualizare).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
Page 11 of 15
OOP - PARTEA 2 STUDII DE CAZ
class B {
public:
~B() { std::cout << "B :: ~B()" << std::endl; }
};
class S {
A a;
B b;
public:
S() : b(), a() {}
virtual ~S() { std::cout << "S :: ~S()" << std::endl; }
};
int main(void)
{
S s;
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa
S :: ~S()
B :: ~B()
A :: ~A()
Studiu Caz 16
Analizați codul următor (cu moştenire multiplă şi virtualizare). Care este rezultatul afişat pe ecran în
urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (cu moştenire multiplă şi virtualizare).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
~A() { std::cout << "A :: ~A()" << std::endl; }
};
class B {
public:
~B() { std::cout << "B :: ~B()" << std::endl; }
};
Page 12 of 15
OOP - PARTEA 2 STUDII DE CAZ
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa
S :: ~S()
B :: ~B()
A :: ~A()
Studiu Caz 17
Analizați codul următor (cu ierarhie de clase şi virtualizare). Care este rezultatul afişat pe ecran în
urma executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (cu moştenire multiplă şi virtualizare).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class F{
public:
int x, y; public:
};
class B : public A {
int z;
public:
Page 13 of 15
OOP - PARTEA 2 STUDII DE CAZ
int main(void) {
int m;
cin >> m;
return 0;
}
REZULTAT:
Va afisa
F::F()
A::A()
B::B()
F::F()
A::A()
B::~B()
A::~A()
F::~F()
A::~A()
F::~F()
Studiu Caz 18
Analizați codul următor (tipuri de constructori). Care este rezultatul afişat pe ecran în urma
executării programului?
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (tipuri de constructori).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A {
public:
A() { std::cout << "A::A()" << std::endl; }
};
int main(void) {
A a;
A x = a; A y(x);
int m;
cin >> m;
return 0;
}
Page 14 of 15
OOP - PARTEA 2 STUDII DE CAZ
REZULTAT:
Va afisa
A::A()
A::A(A&)
A::A(A&)
#include "stdafx.h"
using namespace std;
/*
Analizați codul următor (supraîncărcare operatori ++ şi ‐‐).
Care este rezultatul afişat pe ecran în urma executării programului?
*/
#include <iostream>
class A{
public:
private: float a;
};
int main(void) {
A a(1.0);
std::cout << (++(++a)).Get() << std::endl; std::cout << a.Get() << std::endl;
std::cout << (‐‐(‐‐a)).Get() << std::endl; std::cout << a.Get() << std::endl;
int m;
cin >> m;
return 0;
}
REZULTAT:
3
2
0
1
Nota!
*Studiu Caz 20 -nu se va da, cf dl Albeanu, mtg 9mai
Succes! 😊
Page 15 of 15