11,417 matches
-
un obiect derivat este considerat ca fiind de tipul clasei de bază, comportarea dorită a apelului de funcție este nedefinită. Distincția dintre virtual (dinamic) și static este făcută pentru a rezolva această problemă. Dacă funcția în cauză este etichetată drept "virtuală" atunci funcția clasei derivate va fi apelată (dacă ea există). Dacă e statică, atunci va fi apelată funcția clasei de bază. De exemplu, o clasă de bază codice 1 poate avea o funcție virtuală codice 2. Sub-clasa codice 3 va implementa codice 4 într-
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
Dacă funcția în cauză este etichetată drept "virtuală" atunci funcția clasei derivate va fi apelată (dacă ea există). Dacă e statică, atunci va fi apelată funcția clasei de bază. De exemplu, o clasă de bază codice 1 poate avea o funcție virtuală codice 2. Sub-clasa codice 3 va implementa codice 4 într-un mod diferit față de sub-clasa codice 5, dar poți invoca metoda codice 4 în cadrul oricărei instanțe de clasă de referință codice 1, și obține o comportare specifică clasei derivate pentru care această metodă a fost redefinită
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
fel de animal se poate afla pe listă. Nici măcar nu trebuie să știi cum mănâncă fiecare animal, sau care ar putea fi setul complet de tipuri posibile de animale. Următorul este un exemplu în C++: Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
pe listă. Nici măcar nu trebuie să știi cum mănâncă fiecare animal, sau care ar putea fi setul complet de tipuri posibile de animale. Următorul este un exemplu în C++: Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
să știi cum mănâncă fiecare animal, sau care ar putea fi setul complet de tipuri posibile de animale. Următorul este un exemplu în C++: Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza lor în mod direct, și
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
fiecare animal, sau care ar putea fi setul complet de tipuri posibile de animale. Următorul este un exemplu în C++: Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza lor în mod direct, și o clasă derivată a
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
ar putea fi setul complet de tipuri posibile de animale. Următorul este un exemplu în C++: Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza lor în mod direct, și o clasă derivată a unei clase abstracte poate
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
Secvență de ieșire cu metoda virtuală codice 2: Rezultat obținut fără metoda virtuală codice 2: O funcție pur virtuală sau metodă pur virtuală este o funcție virtuală ce trebuie implementată de o clasă derivată ce nu este abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza lor în mod direct, și o clasă derivată a unei clase abstracte poate fi folosită la crearea unui obiect dacă toate metodele pur virtuale ale acelei clase au fost
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
abstractă. Clasele conținând metode pur virtuale sunt denumite "abstracte"; nu poate fi creată o instanță pe baza lor în mod direct, și o clasă derivată a unei clase abstracte poate fi folosită la crearea unui obiect dacă toate metodele pur virtuale ale acelei clase au fost implementate în cadrul său sau în clasa părinte. Metodele pur virtuale de obicei au specificată o (semnătură) în secțiunea de declarații a programului și nici o definiție (implementare). Ca exemplu, o clasă abstractă de bază "MathSymbol" poate
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
pe baza lor în mod direct, și o clasă derivată a unei clase abstracte poate fi folosită la crearea unui obiect dacă toate metodele pur virtuale ale acelei clase au fost implementate în cadrul său sau în clasa părinte. Metodele pur virtuale de obicei au specificată o (semnătură) în secțiunea de declarații a programului și nici o definiție (implementare). Ca exemplu, o clasă abstractă de bază "MathSymbol" poate specifica o funcție pur virtuală codice 12, și clasele derivate "Plus" și "Minus" implementează codice 12 oferind
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
fost implementate în cadrul său sau în clasa părinte. Metodele pur virtuale de obicei au specificată o (semnătură) în secțiunea de declarații a programului și nici o definiție (implementare). Ca exemplu, o clasă abstractă de bază "MathSymbol" poate specifica o funcție pur virtuală codice 12, și clasele derivate "Plus" și "Minus" implementează codice 12 oferind versiuni concrete. Implementarea funcției codice 12 nu ar avea sens în clasa "MathSymbol" deoarece "MathSymbol" este un concept abstract al cărui comportament este definit doar pentru fiecare tip (specie) de clasă
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
MathSymbol" este un concept abstract al cărui comportament este definit doar pentru fiecare tip (specie) de clasă derivată din aceasta. În mod similar, o clasă derivată din "MathSymbol" ar fi incompletă fără o implementare a metodei codice 12. Deși metodele pur virtuale de obicei nu au o implementare în clasa în care au fost declarate, în C++ este permisă implementarea lor în chiar aceste clase, asigurând o metodă de revenire sau o comportare implicită la care se poate apela în caz de
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
permisă implementarea lor în chiar aceste clase, asigurând o metodă de revenire sau o comportare implicită la care se poate apela în caz de necesitate când o clasă derivată consideră oportună delegarea unei funcționalități spre clasa de bază. Funcții pur virtuale sunt utilizate de asemenea oriunde declarațiile de metode sunt folosite pentru a defini o interfață pentru care clasele derivate vor furniza toate implementările. O clasă abstractă servind drept interfață conține doar funcții pur virtuale, și nici un membru de tip dată
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
spre clasa de bază. Funcții pur virtuale sunt utilizate de asemenea oriunde declarațiile de metode sunt folosite pentru a defini o interfață pentru care clasele derivate vor furniza toate implementările. O clasă abstractă servind drept interfață conține doar funcții pur virtuale, și nici un membru de tip dată sau metode obișnuite. Utilizarea de clase pur abstracte drept interfețe este posibilă în C++ deoarece acesta suportă tehnica de moștenire multiplă. Deoarece multe limbaje ce suportă tehnica programării pe obiecte nu suportă și moștenirea
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
Deoarece multe limbaje ce suportă tehnica programării pe obiecte nu suportă și moștenirea multiplă vor furniza de obicei un mecanism de interfețe în mod separat. Lucrul acesta poate fi observat în cazul limbajului Java de exemplu. În C++, funcțiile pur virtuale sunt declarate utilizând o sintaxă specială [ "= 0" ] după cum a fost demonstrat mai jos. Declarația funcției pur virtuale furnizează doar prototipul metodei. Deși o implementare a funcției pur virtuale în mod obișnuit nu este furnizată într-o clasă abstractă, ea poate
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
obicei un mecanism de interfețe în mod separat. Lucrul acesta poate fi observat în cazul limbajului Java de exemplu. În C++, funcțiile pur virtuale sunt declarate utilizând o sintaxă specială [ "= 0" ] după cum a fost demonstrat mai jos. Declarația funcției pur virtuale furnizează doar prototipul metodei. Deși o implementare a funcției pur virtuale în mod obișnuit nu este furnizată într-o clasă abstractă, ea poate fi totuși inclusă în aceasta. Toate clasele concrete derivate din clasa abstractă vor trebui totuși să rescrie
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
fi observat în cazul limbajului Java de exemplu. În C++, funcțiile pur virtuale sunt declarate utilizând o sintaxă specială [ "= 0" ] după cum a fost demonstrat mai jos. Declarația funcției pur virtuale furnizează doar prototipul metodei. Deși o implementare a funcției pur virtuale în mod obișnuit nu este furnizată într-o clasă abstractă, ea poate fi totuși inclusă în aceasta. Toate clasele concrete derivate din clasa abstractă vor trebui totuși să rescrie metoda, dar implementarea oferită de clasa abstractă poate fi apelată în
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
din clasa abstractă vor trebui totuși să rescrie metoda, dar implementarea oferită de clasa abstractă poate fi apelată în acest mod: Compilatorul știe ce metodă implementată va trebui apelată în timpul execuției și produce o tabelă de pointeri spre toate funcțiile virtuale dintr-o clasă, denumită o codice 16 sau tabelă virtuală ce va fi inclusă în programul executabil. Limbajele orientate obiect gestionează alocarea și dezalocarea memoriei în mod automat când obiectele sunt create și distruse, oricum unele limbaje orientate obiect permit implementarea
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
dar implementarea oferită de clasa abstractă poate fi apelată în acest mod: Compilatorul știe ce metodă implementată va trebui apelată în timpul execuției și produce o tabelă de pointeri spre toate funcțiile virtuale dintr-o clasă, denumită o codice 16 sau tabelă virtuală ce va fi inclusă în programul executabil. Limbajele orientate obiect gestionează alocarea și dezalocarea memoriei în mod automat când obiectele sunt create și distruse, oricum unele limbaje orientate obiect permit implementarea unei metode "destructor" special modificată dacă acest lucru este
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
orientate obiect permit implementarea unei metode "destructor" special modificată dacă acest lucru este dorit. Un astfel de limbaj este C++, și după cum este ilustrat în exemplul următor, este important pentru o clasă de bază din C++ să conțină o metodă virtuală de tip "destructor" pentru a asigura că destructorul clasei ce a fost derivată de cele mai multe ori, va fi apelat de fiecare dată. În exemplul de mai jos lipsa unui "destructor" virtual, în timp ce este ștearsă o instanță a clasei B aceasta
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
clasă de bază din C++ să conțină o metodă virtuală de tip "destructor" pentru a asigura că destructorul clasei ce a fost derivată de cele mai multe ori, va fi apelat de fiecare dată. În exemplul de mai jos lipsa unui "destructor" virtual, în timp ce este ștearsă o instanță a clasei B aceasta va apela în mod corect "destructor"-ii ambelor clase B și A; dacă este ștearsă ca o instanță a clasei B, o instanță a clasei B ștearsă via pointer al clasei
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
a clasei B, o instanță a clasei B ștearsă via pointer al clasei de bază A va eșua în apelul destructorului pentru clasa B. Output: Declararea în mod corect codice 17 a destructor-ilor pentru clasa A ca fiind de tip virtual se va asigura faptul că destructor-ul pentru clasa B este apelat în amândouă cazurile din exemplul de mai sus.
Funcție virtuală () [Corola-website/Science/309519_a_310848]
-
terminarea execuției instrucțiunii, rezultatul reținut în regiștrii este returnat pentru memorare în cache-ul de date și apoi transmis memoriei principale. Cache-ul TLB (din engleză, Translation Look-Aside Buffer) accesează memoria fizică. Fiecare task care rulează are alocat un spațiu din memoria virtuală, care accesează spații din adresa fizică. Procesorul lucrează cu memoria virtuală, iar memoria cache și memoria de operare lucrează cu memoria fizică. Fiecare spațiu din memoria virtuală sau fizică folosește pagini pentru accesare. TLB-ul reține aceste pagini, și datorită
Memorie cache () [Corola-website/Science/309548_a_310877]
-
în cache-ul de date și apoi transmis memoriei principale. Cache-ul TLB (din engleză, Translation Look-Aside Buffer) accesează memoria fizică. Fiecare task care rulează are alocat un spațiu din memoria virtuală, care accesează spații din adresa fizică. Procesorul lucrează cu memoria virtuală, iar memoria cache și memoria de operare lucrează cu memoria fizică. Fiecare spațiu din memoria virtuală sau fizică folosește pagini pentru accesare. TLB-ul reține aceste pagini, și datorită vitezei caracteristice memoriei cache, accesarea spațiilor memoriei fizice este rapidă, ceea ce
Memorie cache () [Corola-website/Science/309548_a_310877]
-
accesează memoria fizică. Fiecare task care rulează are alocat un spațiu din memoria virtuală, care accesează spații din adresa fizică. Procesorul lucrează cu memoria virtuală, iar memoria cache și memoria de operare lucrează cu memoria fizică. Fiecare spațiu din memoria virtuală sau fizică folosește pagini pentru accesare. TLB-ul reține aceste pagini, și datorită vitezei caracteristice memoriei cache, accesarea spațiilor memoriei fizice este rapidă, ceea ce duce la o viteză bună a procesorului pentru lucrul cu adresele virtuale și rularea taskurilor. Există
Memorie cache () [Corola-website/Science/309548_a_310877]