POO

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++

POO

Mesajde 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 ?
stelian_2681
Junior
Junior
 
Mesaje: 32
Membru din: 24 Iun 2013, 23:25
Judet: Olt

Re: POO

Mesajde Kavarna » 12 Feb 2017, 20:54

In early binding compilatorul stie ce functie va fi apelata.
Cod: Selectaţi tot
#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
Cod: Selectaţi tot
#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.
Cod: Selectaţi tot
#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.
Cod: Selectaţi tot
#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.
Kavarna
Junior
Junior
 
Mesaje: 11
Membru din: 20 Sep 2015, 19:14
Judet: Neamţ

Re: POO

Mesajde stelian_2681 » 12 Feb 2017, 23:11

Multumesc !
stelian_2681
Junior
Junior
 
Mesaje: 32
Membru din: 24 Iun 2013, 23:25
Judet: Olt


Înapoi la Limbajul C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 2 vizitatori

cron