· 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.
· 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.
· 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.
· 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.
· 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;
};
· 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;
}
· 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;
};
· 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
· 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.
· 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.
· 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 ;
· 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.
· 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.
· 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
· 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;
|