Documente Academic
Documente Profesional
Documente Cultură
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;
Raspuns:File::~File()
R::~R()
W::~W()
class A
{protected:
int dim;
public:
A(){ cout<<"A::A()"<<endl;}
virtual ~A(){ cout<<"A::~A()"<<endl;}
……..A* p = new B();
p->Create( );
delete p;
return 0;
Raspuns: A::Create(16)
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;
Care declarare este corecta: AbstractList *pa;
4.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)
……….
// 4. supraincarcare metoda virtuala,
virtual int v(){cout<<"int B::v()"<<endl; return 1;}
Care definitie este incorecta: 4.
virtual void v() este in A si in b este int functia virtuala trebuie sa isi pastreze prototipul
referitor la un post mai vechi.
// 4.supraincarcare metoda virtuala,
int void v(){count<<"int B::()"<<endl;return 1;}
class Complex;
class Punct{
public:
Punct(float x=0, float y=0):x(x),y(y){}
operator Complex();
……..
operator Punct(){return Punct(x,y);}
operator float(){return x;}
private:
float x,y;
Metoda Complex:: operator float() este utilizata pentru
Raspuns: Normal operator float() returneaza x dar care x ?
float e cuvant rezervat lui C++ si nu stiu daca poate fi rescris
class A{
public:
void m(){cout<<"A:m()"<<endl;};
virtual void v(){cout<<"A:v()"<<endl;};
………
A a,*p;
B b;
b.m();
b.v();
p=&b;
p->m();
p->v();
Care expresie este corecta: p->m(); raspuns bun
deoarce m si v din B sunt private
8.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(); }
virtual void Create(int d = 0x10)
{ cout<<"B::Create: d = "<< d << endl;
}
……
Baza2 *p = new Derivat2();
p->Build();
delete p;
return 0;
Raspuns: B::Create: d = 16
D::Create: d = 16
B::Create: d = 16
9.Fie urmatoarea specificare de clase:
class Complex;
class Punct{
public:
Punct(float x=0, float y=0):x(x),y(y){}
………..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;
Metoda Complex:: operator float() este utilizata pentru
Conversia obiectelor Complex in numere reale Raspuns Bun
Conversia unui obiect Punct in obiect Complex
12.Fie programul:
class Persoana{
public:
Persoana(char * n){nume=n;}
void afisare(){cout<<nume<<endl;}
char *nume;
13. EX Examen
#include <iostream.h>
class C{
public:
private:
int dim;
int *pi;
………….void main(){
C x(3,a),y(2, b);
x=y;
y.set(0,-100);cout<<x<<endl;
…….B::B(B)
B::B(B&)
B::B()
B::B(B&)
B::B(B&)
B::B()
B::B()
B::B()
Baza a;=B::B()
Baza b = a;=B::B(B&)
Baza c(b);=B::B(B&)
15. Ex examen
#include <iostream.h>
class A{
public: