Constructori și destructori
ü obține o idee de constructor si destructor al clasei;
ü obține o idee de specificatori de acces.
În prelegerea anterioară în definițiile de clasă și bunuri de clasă complexe au defecte. Prima dintre ele - lipsa de inițializare automată a obiectelor create. Pentru fiecare clasă de complex nou creat de obiect, trebuie să apelați def funcția (), sau în mod explicit prin denumirile rafinate pentru a atribui valori obiect de date, adică re alternativ și im. Mai mult de două moduri - obținerea valorilor inițiale la inițializarea și atribuirea unor valori printr-un apel explicit la funcțiile de componente.
Pentru a inițializa clasa obiectului în definiția sa includă în mod expres o funcție specială componentă numită constructor. Formatul care definește un constructor în organism clasă ar putea fi:
<имя класса> (<список формальных параметров>)
<операторы тела конструктора>
Numele funcțiilor componente ale normelor C ++ trebuie să se potrivească cu numele clasei. O astfel de funcție este numit în mod automat atunci când se determină plasarea sau în memoria cu noul operator pentru fiecare clasă de obiecte. Scopul principal al constructorului - inițializarea obiectelor. Pentru constructorul clasei complexe, puteți introduce o funcție echivalentă def (), dar diferă de acesta numai în nume:
def complex (float re1, float IM1)
În conformitate cu sintaxa limbii pentru constructori nu este definit tipul de întoarcere. Chiar nule de tip nu este valid. Folosind parametrul de construcție poate fi transmis orice date necesare pentru a crea și inițializa obiectul de clasă. elemente de valoare „număr complex“ ale obiectului sunt transmise în constructor complex. În mod implicit, datorită valorilor inițiale ale parametrilor au format un număr complex cu o zero, piese reale și imaginare. În general, proiectantul poate fi în mod arbitrar complexe. De exemplu, în clasa de „matrice“ constructor va aloca memorie pentru matrice în care se prezintă matricea - o clasă obiect dat, apoi inițializa matrice. Mărimea matricei și valorile inițiale ale elementelor sale un designer poate primi parametri prin aparatul ca valorile componentelor unui număr complex în complex constructor.
Al doilea complex de clasa defect - Aceasta este o componentă publică. În orice punct din program unde definiție „clară“ clasă folosind denumirile rafinate (de exemplu, <имя объекта>. sau re <имя объекта>. im) sau printr-un pointer la un obiect și operarea selecției indirecte „->“ accesul la datele componente ale obiectului. Astfel, nu a îndeplinit principiul de bază al abstractizare datelor - capsulare (ascunderea) datele din obiectul. Pentru a schimba vizibilitatea componentelor într-o definiție de clasă pot fi folosite pentru a accesa specificatori. Accesul specificator - este una dintre cele trei cuvânt oficial privat (privat), publică (public), protejat (privat), care a fost plasat un colon.
Forma de calificare:
1 component; // spetsifikatora1 Domeniu de aplicare
De obicei, proprietățile de clasă (componente de date) atribuită specificator private. și metode (caracteristici de componente) - publice. În cazul în care specificatorul de acces nu este specificat, atunci structurile de acces implicit - publice. pentru toate celelalte tipuri - private. Apariția oricăror specificatorii de acces la definiție clasă de text înseamnă că determinarea de capăt sau la o altă clasă Specificator toate componentele trebuie să acceseze statutul specificat. Protejate componente ale clasei (protejate) necesare numai în cazul construirii unei ierarhii de clase. Atunci când este utilizat fără generarea de clase pe baza unor alte clase (derivate) protejate cerere specifier specificator este echivalentă cu utilizarea privată. Deoarece clasa, toate ale căror componente nu sunt disponibile în afara definiției sale, poate fi rareori utilă pentru a schimba starea de acces la componente permit proiectantilor dostupaprivate (proprii), publicul (public), protejat, (propriu).
Deci, pentru a ascunde datele dintr-o clasă de obiecte suficient înainte ca acestea să apară în definiția tipului (într-o clasă) a pus specificator privat. În acest caz, este necesar ca unele sau toate funcțiile care aparțin clasei a rămas în afara este disponibil, care va manipula datele de clasă de obiecte. Aceste cerințe vor satisface următoarea definiție de clasă „număr complex“:
// COMPLEX. H - definiția clasei „număr complex“
// clasa cu un constructor și date încapsulare:
// metode de clasă (toate disponibile în mod public - public):
// clasa obiect Constructor:
complex (float re1, float IM1)