Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Klase i objekti

Croata sarbo croata


Klase

Klase i objekti

Pojmovi

·     14414o144o ;     14414o144o ; Klasa je strukturirani tip koji obuhvata podatke i funkcije namenjene definisanju operacija nad podacima klase.



·     14414o144o ;     14414o144o ; Klasa je realizacija apstrakcije koja ima internu implementaciju i javni interfejs.

·     14414o144o ;     14414o144o ; Jedan primerak (instanca, pojava) klase naziva se objektom te klase (engl. class object).

·     14414o144o ;     14414o144o ; Podaci koji su deo klase nazivaju se podaci članovi klase (engl. data members), polja ili atributi.

·     14414o144o ;     14414o144o ; Funkcije koje su deo klase nazivaju se funkcije članice klase (engl. member functions).

·     14414o144o ;     14414o144o ; Kaze se jos da objekat klase ima svoje unutrasnje stanje, predstavljeno atributima, koje menja pomoću operacija.

·     14414o144o ;     14414o144o ; Javne funkcije članice nazivaju se jos i metodima (Smalltalk, Java) ili primitivnim operacijama (Ada) klase.

·     14414o144o ;     14414o144o ; Poziv ovih funkcija ponekad se naziva upućivanjem poruke objektu klase.

·     14414o144o ;     14414o144o ; Objekat klase moze da menja svoje stanje kada se pozove njegov metod, odnosno kada mu se uputi poruka.

·     14414o144o ;     14414o144o ; Objekat unutar svoje funkcije članice moze pozivati funkciju članicu neke druge ili iste klase.

·     14414o144o ;     14414o144o ; Objekat koji salje poruku naziva se objekat-klijent, a onaj koji je prima je objekat-server.

·     14414o144o ;     14414o144o ; Unutar funkcije članice klase, članovima objekta čija je funkcija pozvana pristupa se navođenjem njihovog imena.

·     14414o144o ;     14414o144o ; Moguće je preklopiti (engl. overload) funkcije članice, uključujući i konstruktore.

Prava pristupa

·     14414o144o ;     14414o144o ; Članovi (podaci ili funkcije) klase iza ključne reči private: nazivaju se privatnim (engl. private) članovima:

·     14414o144o ;     14414o144o ; zastićeni su od pristupa spolja (enkapsulirani su); njima mogu pristupati funkcije članice klase (i prijatelji).

·     14414o144o ;     14414o144o ; Članovi iza ključne reči public: nazivaju se javnim (engl. public) članovima:

·     14414o144o ;     14414o144o ; dostupni su spolja bez ograničenja.

·     14414o144o ;     14414o144o ; Članovi iza ključne reči protected: nazivaju se zastićenim (engl. protected) članovima:

·     14414o144o ;     14414o144o ; dostupni su funkcijama članicama date klase, kao i klasa izvedenih iz te klase, ali ne i ostalim funkcijama.

·     14414o144o ;     14414o144o ; Redosled sekcija public, protected i private je proizvoljan, ali se preporučuje bas navedeni redosled.

·     14414o144o ;     14414o144o ; Podrazumevano je (ako se ne navede specifikator ispred) da su članovi privatni.

·     14414o144o ;     14414o144o ; Preporuka je da se klase projektuju tako da nemaju javne podatke članove.

·     14414o144o ;     14414o144o ; Kontrola pristupa članovima nije stvar objekta, nego klase.

·     14414o144o ;     14414o144o ; objekat neke klase iz svoje funkcije članice moze da pristupi privatnim članovima drugog objekta iste klase.

·     14414o144o ;     14414o144o ; Takođe, kontrola pristupa članovima je potpuno odvojena od koncepta oblasti vazenja.

·     14414o144o ;     14414o144o ; Najpre se, na osnovu oblasti vazenja, određuje entitet na koga se odnosi dato ime na mestu obraćanja u programu, a zatim se određuje da li je tom entitetu dozvoljen pristup sa tog mesta.

Definisanje klase

·     14414o144o ;     14414o144o ; Definicija klase se uobičajeno pise u datoteci zaglavlju (*.h).

·     14414o144o ;     14414o144o ; Podaci članovi:

·     14414o144o ;     14414o144o ; mogu da budu samo deklarisani, a ne i definisani (nema inicijalizacije);

·     14414o144o ;     14414o144o ; ne mogu da budu tipa klase koja se definise, ali mogu biti pokazivači ili reference na tu klasu.

·     14414o144o ;     14414o144o ; Funkcije članice:

·     14414o144o ;     14414o144o ; mogu da se deklarisu (navodi se samo prototip) ili definisu (navodi se i telo) u definiciji klase;

·     14414o144o ;     14414o144o ; funkcije koje su definisane u definiciji klase su inline funkcije;

·     14414o144o ;     14414o144o ; funkcije koje su deklarisane u definiciji klase, moraju biti definisane kasnije, izvan definicije klase;

·     14414o144o ;     14414o144o ; funkcije koje su definisane u definiciji klase mogu neposredno pristupati lanovima klase;

·     14414o144o ;     14414o144o ; za funkcije koje su definisane izvan klase mora se prosiriti doseg klase (<ime_klase> <ime_funkcije>);

·     14414o144o ;     14414o144o ; vrednost koju vraća funkcija članica, kao i njeni argumenti mogu biti tipa klase koja se definise.

·     14414o144o ;     14414o144o ; Identifikatori svih članova klase imaju klasni opseg vazenja (doseg).

// definicija klase Complex:
class Complex ;

·     14414o144o ;     14414o144o ; Nepotpuna definicija klase (bez ) se naziva deklaracijom (class S;).

·     14414o144o ;     14414o144o ; Pre definicije klase mogu samo da se definisu pokazivači i reference na tu klasu, ali ne i objekti te klase.

Primerci klase

·     14414o144o ;     14414o144o ; Primerci klase se definisu na način uobičajen za definisanje objekata standardnih tipova.

·     14414o144o ;     14414o144o ; identifikator klase se koristi kao oznaka tipa.

·     14414o144o ;     14414o144o ; Za svaki objekat klase formira se poseban komplet svih nestati kih podataka članova te klase.

·     14414o144o ;     14414o144o ; Za svaku funkciju članicu, postoji jedinstven skup lokalnih statičkih objekata bez obzira na broj objekata te klase.

·     14414o144o ;     14414o144o ; Ovi objekti zive od prvog nailaska programa na njihovu definiciju, do kraja programa.

·     14414o144o ;     14414o144o ; Lokalni statički objekti funkcija članica imaju sva svojstva lokalnih statičkih objekata funkcija nečlanica.

·     14414o144o ;     14414o144o ; Podrazumevano se sa objektima klase moze raditi sledeće:

·     14414o144o ;     14414o144o ; definisati primerke (objekte), pokazivače na objekte, reference na objekte i nizove objekata klase;

·     14414o144o ;     14414o144o ; dodeljivati vrednosti (operator ) jednog objekta drugom;

·     14414o144o ;     14414o144o ; uzimati adrese objekata (operator &) i posredno pristupati objektima preko pokazivača (operator );

·     14414o144o ;     14414o144o ; pristupati članovima i pozivati funkcije članice neposredno (operator ) ili posredno (operator ->);

·     14414o144o ;     14414o144o ; pristupati elementima nizova objekata pomoću operatora ;

·     14414o144o ;     14414o144o ; prenositi objekte kao argumente funkcija i to po vrednosti ili referenci, ili prenositi pokazivače na objekte;

·     14414o144o ;     14414o144o ; vraćati objekte iz funkcija po vrednosti ili referenci, ili vraćati pokazivače na objekte.

·     14414o144o ;     14414o144o ; Neke od ovih operacija korisnik moze redefinisati preklapanjem operatora.

Pokazivač this

·     14414o144o ;     14414o144o ; Unutar svake funkcije članice postoji implicitni (podrazumevani, ugrađeni) lokalni pokaziva this.

·     14414o144o ;     14414o144o ; Tip ovog pokazivača je "konstantni pokazivač na klasu čija je funkcija članica".

·     14414o144o ;     14414o144o ; Ako je klasa X, this je tipa X*const.

·     14414o144o ;     14414o144o ; Ovaj pokazivač ukazuje na objekat čija je funkcija članica pozvana.

// definicija funkcije cAdd članice klase Complex
Complex Complex::cAdd (Complex c)

·     14414o144o ;     14414o144o ; Pristup članovima objekta čija je funkcija članica pozvana obavlja se neposredno.

·     14414o144o ;     14414o144o ; Implicitno je to pristup preko pokazivača this i operatora ->.

·     14414o144o ;     14414o144o ; Moze se i eksplicitno pristupati članovima preko ovog pokazivača unutar funkcije članice.

// nova definicija funkcije cAdd clanice klase Complex
Complex Complex::cAdd (Complex c)

·     14414o144o ;     14414o144o ; Pokazivač this je, u stvari, jedan skriveni argument funkcije članice.

·     14414o144o ;     14414o144o ; Poziv objekat.f() prevodilac prevodi u kôd koji ima semantiku kao f(&objekat).

·     14414o144o ;     14414o144o ; Primeri korisćenja:

·     14414o144o ;     14414o144o ; adresa tekućeg objekta je potrebna kao argument neke funkcije;

·     14414o144o ;     14414o144o ; tekući objekat treba uključiti u listu;

·     14414o144o ;     14414o144o ; prilikom uspostavljanja bidirekcionalne navigacije između dva objekta od kojih jedan sadrzi drugi:
npr. objekat klase Kontejner sadrzi objekat klase Deo, pri čemu objekat deo treba da "zna" ko ga sadrzi.

class Kontejner {
public: Kontejner () : deo(this)
private: Deo deo;
};

class Deo{
public: Deo(Kontejner* kontejner) : mojKontejner(kontejner)
private: Kontejner* mojKontejner;
};

Konstantne i nepostojane funkcije članice

·     14414o144o ;     14414o144o ; Funkcija članica moze samo da čita stanje ili da menja stanje objekata.

·     14414o144o ;     14414o144o ; Funkcije članice koje ne menjaju stanje objekta nazivaju se inspektori ili selektori (engl. inspector, selector).

·     14414o144o ;     14414o144o ; Funkcija članica koja menja stanje objekta naziva se mutator ili modifikator (engl. mutator, modifier).

·     14414o144o ;     14414o144o ; Dobra praksa je da se korisnicima klase navede da li neka funkcija članica menja unutrasnje stanje objekta.

·     14414o144o ;     14414o144o ; Da je funkcija članica inspektor, korisniku klase govori reč const iza zaglavlja funkcije.

·     14414o144o ;     14414o144o ; Ovakve funkcije članice nazivaju se konstantnim funkcijama članicama (engl. constant member functions).

class X
int write (int j=0)
private:
int i;
};

·     14414o144o ;     14414o144o ; Deklarisanje funkcije članice kao inspektora je samo notaciona pogodnost i "stvar lepog ponasanja".

·     14414o144o ;     14414o144o ; To je obećanje projektanta klase da funkcija ne menja stanje objekta.

·     14414o144o ;     14414o144o ; Prevodilac nema načina da u potpunosti proveri da li inspektor menja neke podatke članove klase.

·     14414o144o ;     14414o144o ; Inspektor moze da menja podatke članove, uz pomoć eksplicitne konverzije, koja "probija" kontrolu konstantnosti.

·     14414o144o ;     14414o144o ; U konstantnoj funkciji članici tip pokazivača this je const X*const, tako da pokazuje na konstantni objekat.

·     14414o144o ;     14414o144o ; Nije moguće menjati objekat preko pokazivača this (svaki neposredni pristup članu je pristup preko this).

·     14414o144o ;     14414o144o ; Takođe, za konstantne objekte klase nije dozvoljeno pozivati nekonstantnu funkciju članicu.

X x;
const X cx;

x.read(); // u redu: konstantna funkcija nekonstantnog objekta;
x.write(); // u redu: nekonstantna funkcija nekonstantnog objekta;
cx.read(); // u redu: konstantna funkcija konstantnog objekta;
cx.write();// ! GRESKA: nekonstantna funkcija konstantnog objekta;

·     14414o144o ;     14414o144o ; Suprotnost konstantne funkcije je nepostojana (volatile) funkcija članica.

int f(...) volatile

·     14414o144o ;     14414o144o ; Pri izvrsenju nepostojane funkcije f objekat (*this) moze promeniti stanje nezavisno od toka funkcije f

·     14414o144o ;     14414o144o ; Nepostojanost funkcije predstavlja napomenu prevodiocu da ne vrsi neke optimizacije.

class X
int f() volatile { // da nije volatile, prevodilac bi optimizirao:
while(!done) // if (!done) while()
} // u telu (...) se ne menja done
void finished()
private:
int done;
}

Zajednički članovi klasa

Zajednički (statički) podaci članovi

·     14414o144o ;     14414o144o ; Pri kreiranju objekata klase, za svaki objekat se kreira poseban komplet podataka članova.

·     14414o144o ;     14414o144o ; Podatak član moze biti deklarisan kao statički pomoću specifikatora static ispred tipa.

·     14414o144o ;     14414o144o ; Postoji samo jedan primerak statičkog podatka člana za celu klasu (zajednički podatak za sve objekte klase).

class X ;

·     14414o144o ;     14414o144o ; Statički član klase ima zivotni vek kao i globalni statički objekat: nastaje na početku i traje do kraja programa.

·     14414o144o ;     14414o144o ; Statički član klase ima sva svojstva globalnog statičkog objekta, osim oblasti vazenja klase i kontrole pristupa.

·     14414o144o ;     14414o144o ; Statički član mora da se definise izvan definicije klase i izvan definicija funkcija.

·     14414o144o ;     14414o144o ; U definiciji statičkog člana moze da se koristi samo konstantan izraz.

·     14414o144o ;     14414o144o ; Dodela inicijalne vrednosti statičkom članu se vrsi pre poziva main().

·     14414o144o ;     14414o144o ; Obraćanje statičkom članu van klase vrsi se preko operatora . Za prethodni primer: int X::i=5;

·     14414o144o ;     14414o144o ; Statički članovi se uglavnom koriste kada svi primerci jedne klase treba da dele neku zajedničku informaciju.

·     14414o144o ;     14414o144o ; Primer: klasa definise listu objekata, a glava liste je zajednički član klase.

·     14414o144o ;     14414o144o ; Zajednički članovi smanjuju potrebu za globalnim objektima.

·     14414o144o ;     14414o144o ; Za razliku od globalnih objekata - zajedničkim podacima je moguće ograničiti pristup.

·     14414o144o ;     14414o144o ; Zajednički članovi logički pripadaju klasi.

class Element ;

·     14414o144o ;     14414o144o ; Drugi primer: vođenje evidencije o broju kreiranih primeraka

class Objekat
//..
private:
static int brojac;
};

Zajedničke (statičke) funkcije članice

·     14414o144o ;     14414o144o ; Funkcije članice se deklarisu kao statičke (zajedničke za celu klasu), dodavanjem reči static ispred deklaracije.

·     14414o144o ;     14414o144o ; Statičke funkcije članice imaju sva svojstva globalnih funkcija, osim oblasti vazenja i kontrole pristupa.

·     14414o144o ;     14414o144o ; Statičke funkcije članice ne poseduju pokazivač this.

·     14414o144o ;     14414o144o ; Statičke funkcije članice ne mogu neposrednim imenovanjem pristupati nestatičkim članovima klase.

·     14414o144o ;     14414o144o ; Statičke funkcije članice mogu pristupati nestatičkim članovima konkretnog objekta
koji je formalni argument, lokalni ili globalni objekat.

·     14414o144o ;     14414o144o ; Statičke funkcije mogu neposredno pristupati samo statičkim članovima klase.

·     14414o144o ;     14414o144o ; Statičke funkcije članice se mogu pozivati za konkretan objekat (sto treba izbegavati).

·     14414o144o ;     14414o144o ; Statičke funkcije članice se mogu pozivati i pre formiranja objekata klase, i to ovako: <klasa> <poziv>.

·     14414o144o ;     14414o144o ; Statičke funkcije članice imaju samo jedan komplet lokalnih statičkih promenljivih.

class X ;

int X::x=5; // definicija statickog podatka clana;

int X::f(X x1, X& x2)

int X::g ()

void main ()

·     14414o144o ;     14414o144o ; Statičke funkcije predstavljaju operacije klase, a ne svakog posebnog objekta.

·     14414o144o ;     14414o144o ; Primena: za opste usluge klase, npr. kreiranje novih, dinamičkih objekata te klase

·     14414o144o ;     14414o144o ; Primer: na sledeći način moze se obezbediti da se za datu klasu mogu kreirati samo dinamički objekti:

class X
private:
X(); // konstruktor je privatan
};

void main()

·     14414o144o ;     14414o144o ; Primena ovog primera: funkcija kreiraj moze ograničiti broj kreiranih objekata klase

Prijatelji klasa

·     14414o144o ;     14414o144o ; Ponekad je potrebno da klasa ima i "povlasćene" korisnike koji mogu da pristupaju njenim privatnim članovima.

·     14414o144o ;     14414o144o ; Povlasćeni korisnici su funkcije (globalne ili članice drugih klasa) ili cele klase.

·     14414o144o ;     14414o144o ; Takve funkcije i klase nazivaju se prijateljima (engl. friends).

·     14414o144o ;     14414o144o ; Prijateljstvo se ne nasleđuje, nije simetrična i nije tranzijentna relacija.

Prijateljske funkcije

·     14414o144o ;     14414o144o ; Prijateljske funkcije su funkcije koje nisu članice klase, ali imaju pristup do privatnih članova klase.

·     14414o144o ;     14414o144o ; Prijateljske funkcije mogu da budu globalne funkcije ili članice drugih klasa.

·     14414o144o ;     14414o144o ; Funkcija je prijateljska ako se u definiciji klase navede deklaracija funkcije sa ključnom reči friend ispred.

·     14414o144o ;     14414o144o ; Nevazno je da li se deklaracija prijateljske funkcije navodi u privatnom ili javnom delu klase.

class X
};

void g (int k, X &x) // privatnim clanovima klase

void main ()

·     14414o144o ;     14414o144o ; Prijateljska funkcija nema pokazivač this na objekat klase kojoj je prijatelj.

·     14414o144o ;     14414o144o ; Prijateljstvo je relacija koja regulise pravo pristupa, a ne oblast vazenja i vidljivost identifikatora.

·     14414o144o ;     14414o144o ; Funkcija moze da bude prijatelj većem broju klasa istovremeno.

·     14414o144o ;     14414o144o ; Postoje prilike kada su globalne prijateljske funkcije pogodnije od funkcija članica:

1.     14414o144o ;  funkcija članica mora da se pozove za objekat date klase,
dok globalnoj funkciji moze da se dostavi i objekat drugog tipa, koji će se konvertovati u potrebni tip;

2.     14414o144o ;  kada funkcija treba da pristupa članovima vise klasa, efikasnija je prijateljska globalna funkcija;

3.     14414o144o ;  ponekad je notaciono pogodnije da se koriste globalne funkcije (f(x)) nego članice (x.f());
na primer: max(a,b) je čitljivije od a.max(b);

4.     14414o144o ;  kada se preklapaju operatori, često je jednostavnije definisati globalne (operatorske) funkcije nego članice.

Prijateljske klase

·     14414o144o ;     14414o144o ; Ako su sve funkcije članice klase Y prijateljske funkcije klasi X, onda je Y prijateljska klasa (friend class) klasi X.

class X ;

·     14414o144o ;     14414o144o ; Sve funkcije članice klase Y mogu da pristupaju privatnim članovima klase X.

·     14414o144o ;     14414o144o ; Prijateljske klase se tipično koriste kada neke dve klase imaju tesnje međusobne veze.

·     14414o144o ;     14414o144o ; Na primer, na sledeći način moze se obezbediti da samo klasa Kreator moze da kreira objekte klase X:

class X ;

Strukture

·     14414o144o ;     14414o144o ; Struktura je klasa kod koje su svi članovi podrazumevano javni.

·     14414o144o ;     14414o144o ; Moze se to promeniti eksplicitnim umetanjem public: i private:

struct a ; };

·     14414o144o ;     14414o144o ; Na C++ struktura moze imati i funkcije članice.

·     14414o144o ;     14414o144o ; Struktura se tipično koristi za definisanje slogova podataka koji ne predstavljaju apstrakciju,
odnosno nemaju ponasanje (nemaju značajnije operacije).

·     14414o144o ;     14414o144o ; Strukture tipično poseduju samo konstruktore i eventualno destruktore kao funkcije članice.

Ugnezđivanje klasa

·     14414o144o ;     14414o144o ; Klase mogu da se definisu i unutar definicije druge klase (ugnezđivanje klasa).

·     14414o144o ;     14414o144o ; Na ovaj način se ugnezđena klasa nalazi u oblasti vazenja okruzujuće klase.

int x,y;

class Spoljna
};
};

·     14414o144o ;     14414o144o ; Spolja se imenu ugnezđene klase moze pristupiti samo preko operatora razresavanja oblasti vazenja .

Unutrasnja u; // ! GRESKA: Unutrasnja nije u oblasti vazenja!
Spoljna::Unutrasnja u; // u redu;

·     14414o144o ;     14414o144o ; Iz spoljasnje klase do članova unutrasnje moguć je samo pristup pomoću , -> i (obrnuto takođe vazi).

·     14414o144o ;     14414o144o ; Iz unutrasnje klase mogu direktno da se koriste samo identifikatori:

·     14414o144o ;     14414o144o ; tipova, nabrojanih konstanti i zajedničkih članova iz spoljasnje klase.

·     14414o144o ;     14414o144o ; Pristup zajedničkom članu unutrasnje klase: <id spoljasnje> <id unutrasnje> <id zajedničkog člana>.

·     14414o144o ;     14414o144o ; Ugnezđivanje je samo stvar oblasti vazenja, a ne i kontrole pristupa članovima.

·     14414o144o ;     14414o144o ; okruzujuća klasa nema nikakva posebna prava pristupa članovima ugnezđene klase.

·     14414o144o ;     14414o144o ; ni ugnezđena klasa nema posebna prava pristupa članovima spoljasnje klase.

·     14414o144o ;     14414o144o ; Unutar definicije klase se mogu navesti i definicije nabrajanja (enum), i typedef definicije.

·     14414o144o ;     14414o144o ; Ugnezđivanje se koristi kada neki tip (nabrajanje ili klasa npr.) semantički pripada samo datoj klasi.

·     14414o144o ;     14414o144o ; Ovakvo korisćenje povećava čitljivost programa i smanjuje potrebu za globalnim tipovima.

Lokalne klase

·     14414o144o ;     14414o144o ; Lokalne klase se definisu unutar funkcija

·     14414o144o ;     14414o144o ; Identifikator lokalne klase ima doseg (oblast vazenja) od deklaracije do kraja bloka u kojem je deklarisan.

·     14414o144o ;     14414o144o ; Unutar lokalne klase iz okruzujućeg dosega je dozvoljeno samo korisćenje:

1.     14414o144o ;    identifikatora tipova

2.     14414o144o ;    nabrojanih konstanti

3.     14414o144o ;    statičkih lokalnih i globalnih objekata

4.     14414o144o ;    spoljasnjih (eksternih) promenljivih i funkcija.

·     14414o144o ;     14414o144o ; Funkcije članice lokalne klase moraju da se definisu unutar definicije klase

·     14414o144o ;     14414o144o ; Lokalna klasa ne moze da ima statičke (zajedničke) podatke članove.

·     14414o144o ;     14414o144o ; Metode lokalne klase moraju da se definisu unutar definicije lokalne klase.

·     14414o144o ;     14414o144o ; Lokalna klasa ne moze da ima zajedničke članove.

int x;
void f() // GRESKA: x je automatska promenljiva
int j () // OK: s je staticka promenljiva
int k () // OK: x je globalna promenljiva
int l () // OK: g() je spoljasnja funkcija
};
}

Lokalna *p = 0; // GRESKA: Lokalna nije u opsegu vazenja

Pokazivači na članove klasa

·     14414o144o ;     14414o144o ; Dodelom vrednosti pokazivaču na lanove klase samo se označi neki član klase.

·     14414o144o ;     14414o144o ; Analogija: kao sto se indeksom označi komponenta niza.

·     14414o144o ;     14414o144o ; Pokazivač na članove klase se definise
<tip lana klase> <klasa> <identifikator pokazivača>

·     14414o144o ;     14414o144o ; Formiranje adrese članova klase
<identifikator pokazivača>=&<klasa> < lan klase>

·     14414o144o ;     14414o144o ; Pristup članovima pomoću pokazivača na članove klase
<objekat klase> <identifikator pokazivača> ili
<pokazivač na objekat klase>->*<identifikator pokazivača>

·     14414o144o ;     14414o144o ; Operatori i ->* su prioriteta 14 i asocijativnost je sleva-udesno.

class Alfa ;

int Alfa::*pc; // pc je pokazivac na int clanove klase Alfa
Alfa alfa,*beta; // alfa je objekat a beta pokazivac na objekat klase Alfa
beta=&alfa; // beta pokazuje na objekat alfa

pc=&Alfa::a; // pc pokazuje na clanove a objekata klase Alfa
alfa.*pc = 1; // alfa.a=1;
beta->*pc = 1; // beta->a=1;

pc=&Alfa::b; // pc pokazuje na clanove b objekata klase Alfa
alfa.*pc = 2; // alfa.b=2;
beta->*pc = 2; // beta->b=2;


Document Info


Accesari: 2290
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )