POO

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

POO

Post by stelian_2681 » 12 Feb 2017, 18:15

Am doua intrebari la care caut raspuns.

Care este diferenta intre early binding si late binding ?

Este adevarat ca o variabila statica apartine clasei si nu obiectului ?



Kavarna
Junior
Junior
Posts: 11
Joined: 20 Sep 2015, 19:14
Judet: Neamţ

Re: POO

Post by Kavarna » 12 Feb 2017, 20:54

In early binding compilatorul stie ce functie va fi apelata.

Code: Select all

#include <iostream>
int func(int a)
{
return a;
}
int main()
{
int a;
func(5); // Early binding
std::cin >> a;
func(a); // Early binding, deoarece compilatorul stie ca va fi apelata functia 'func'
}
In late binding compilatorul nu stie ce functie va fi apelata. Ai folosit un pointer catre o functie, de exemplu

Code: Select all

#include <iostream>
int func(int a)
{
return a;
}
int main()
{
int (*Functie)(int numar);
Functie = func;
func ( 77 ); // late binding
}
De asemenea, late binding este atunci cand apelezi dintr-o functie "parinte" o anumita metoda. Pentru ca compilatorul nu va sti din ce clasa trebuie sa apeleze functia.

Code: Select all

#include <iostream>
class interfata
{
public:
    virtual void Afiseaza() = 0;
};
class copil : public interfata
{
public:
    void Afiseaza()
    {
        std::cout << "Am afisat";
    }
};
int main()
{
    interfata *obj = new copil;
    obj->Afiseaza(); // aici, de asemenea, late binding
}
Cat despre partea cu variabila statica, asa e.

Code: Select all

#include <iostream>
class clasa
{
public:
    static int Count;
    clasa()
    {
        Count++;
        std::cout << "\nAm creat un obiect nou\n";
    }
    ~clasa()
    {
        Count--;
        std::cout << "\nAm distrus un obiect\n";
    };
};
int clasa::Count = 0;
int main()
{
    clasa *obj = new clasa;
    std::cout << clasa::Count; // asa accesezi o variabila statica, deci asta cred ca ar putea fi un argument
    delete obj;
    std::cout << clasa::Count;
}
Dupa cum vezi, fiecare obiect de tip clasa are acces la variabila statica Count.
Sper ca ai inteles cat de cat ce am incercat eu sa explic.

stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

Re: POO

Post by stelian_2681 » 12 Feb 2017, 23:11

Multumesc !

Post Reply