Clasă în C++ este blocul de construcție care duce la programarea orientată pe obiecte. Este un tip de date definit de utilizator, care deține propriii membri de date și funcții membre, care pot fi accesate și utilizate prin crearea unei instanțe a acelei clase. O clasă C++ este ca un plan pentru un obiect. De exemplu: Luați în considerare clasa de Mașini . Pot exista multe mașini cu nume și mărci diferite, dar toate vor avea unele proprietăți comune, așa cum le vor avea toate. 4 roti , Limită de viteză , Interval de kilometraj, etc. Deci aici, mașina este clasa, iar roțile, limitele de viteză și kilometrajul sunt proprietățile lor.
- O clasă este un tip de date definit de utilizator care are membri de date și funcții membre.
- Membrii de date sunt variabilele de date, iar funcțiile membre sunt funcțiile utilizate pentru a manipula aceste variabile împreună, acești membri de date și funcțiile membre definesc proprietățile și comportamentul obiectelor dintr-o clasă.
- În exemplul de mai sus de clasă Mașină , membrul de date va fi Limită de viteză , kilometraj, etc, iar funcțiile membre pot fi aplicând frânele , creșterea vitezei, etc.
Un Obiect este o instanță a unei clase. Când o clasă este definită, nu este alocată nicio memorie, dar atunci când este instanțiată (adică este creat un obiect) este alocată memorie.
Definirea clasei și declararea obiectelor
O clasă este definită în C++ folosind cuvântul cheie class urmat de numele clasei. Corpul clasei este definit în interiorul parantezelor și se termină cu punct și virgulă la sfârșit.
Declararea obiectelor
Când este definită o clasă, este definită doar specificația pentru obiect; nu este alocată memorie sau stocare. Pentru a utiliza datele și funcțiile de acces definite în clasă, trebuie să creați obiecte.
Sintaxă
ClassName ObjectName;>
Accesarea membrilor datelor și funcțiilor membrilor : Membrii de date și funcțiile de membru ale clasei pot fi accesate folosind operatorul punct(‘.’) cu obiectul. De exemplu, dacă numele obiectului este obj și doriți să accesați funcția de membru cu numele printeaza numele() atunci va trebui să scrii obj.printName() .
Accesarea membrilor de date
Membrii datelor publice sunt, de asemenea, accesați în același mod, cu toate acestea, membrii datelor private nu au voie să fie accesați direct de către obiect. Accesarea unui membru de date depinde numai de controlul accesului acelui membru de date. Acest control de acces este dat de modificatorii de acces în C++. Există trei modificatori de acces: publice, private și protejate .
C++
vârsta rekha
// C++ program to demonstrate accessing of data members> #include> using> namespace> std;> class> Geeks {> >// Access specifier> public>:> >// Data Members> >string geekname;> >// Member Functions()> >void> printname() { cout <<>'Geekname is:'> << geekname; }> };> int> main()> {> >// Declare an object of class geeks> >Geeks obj1;> >// accessing data member> >obj1.geekname =>'Abhi'>;> >// accessing member function> >obj1.printname();> >return> 0;> }> |
>
>Ieșire
Geekname is:Abhi>
Funcțiile membrilor în clase
Există 2 moduri de a defini o funcție membru:
- Definiția în interiorul clasei
- În afara definiției clasei
Pentru a defini o funcție membru în afara definiției clasei, trebuie să folosim rezoluție domeniului:: operator împreună cu numele clasei și numele funcției.
C++
// C++ program to demonstrate function> // declaration outside class> > #include> using> namespace> std;> class> Geeks> {> >public>:> >string geekname;> >int> id;> > >// printname is not defined inside class definition> >void> printname();> > >// printid is defined inside class definition> >void> printid()> >{> >cout <<>'Geek id is: '>< } }; // Definition of printname using scope resolution operator :: void Geeks::printname() { cout <<'Geekname is: '< } int main() { Geeks obj1; obj1.geekname = 'xyz'; obj1.id=15; // call printname() obj1.printname(); cout << endl; // call printid() obj1.printid(); return 0; }> |
javatpoint java
>
>Ieșire
Geekname is: xyz Geek id is: 15>
Rețineți că toate funcțiile membre definite în definiția clasei sunt implicite în linie , dar puteți, de asemenea, face orice funcție non-clasă în linie folosind cuvântul cheie în linie cu acestea. Funcțiile inline sunt funcții reale, care sunt copiate peste tot în timpul compilării, cum ar fi macro-ul pre-procesor, astfel încât supraîncărcarea apelurilor de funcții este redusă.
Notă: Declararea a funcția de prieten este o modalitate de a oferi acces privat unei funcții non-membru.
Constructorii
Constructorii sunt membri speciali ai clasei care sunt apelați de compilator de fiecare dată când un obiect al acelei clase este instanțiat. Constructorii au același nume ca și clasa și pot fi definiți în interiorul sau în afara definiției clasei. Există 3 tipuri de constructori:
- Constructori impliciti
- Constructori parametrizați
- Copiați constructori
C++
// C++ program to demonstrate constructors> #include> using> namespace> std;> class> Geeks> {> >public>:> >int> id;> > >//Default Constructor> >Geeks()> >{> >cout <<>'Default Constructor called'> << endl;> >id=-1;> >}> > >//Parameterized Constructor> >Geeks(>int> x)> >{> >cout <<>'Parameterized Constructor called '><< endl;> >id=x;> >}> };> int> main() {> > >// obj1 will call Default Constructor> >Geeks obj1;> >cout <<>'Geek id is: '>< // obj2 will call Parameterized Constructor Geeks obj2(21); cout <<'Geek id is: ' < return 0; }> |
>
>Ieșire
Default Constructor called Geek id is: -1 Parameterized Constructor called Geek id is: 21>
A Copie constructor creează un nou obiect, care este o copie exactă a obiectului existent. Compilatorul oferă un constructor de copiere implicit pentru toate clasele.
Sintaxă:
class-name (class-name &){}> distrugătoare
Distrugător este o altă funcție membru specială care este apelată de compilator atunci când domeniul de aplicare al obiectului se termină.
dezavantajele serviciilor bancare online
C++
// C++ program to explain destructors> #include> using> namespace> std;> class> Geeks> {> >public>:> >int> id;> > >//Definition for Destructor> >~Geeks()> >{> >cout <<>'Destructor called for id: '> << id < } }; int main() { Geeks obj1; obj1.id=7; int i = 0; while ( i <5 ) { Geeks obj2; obj2.id=i; i++; } // Scope for obj2 ends here return 0; } // Scope for obj1 ends here> |
>
>Ieșire
Destructor called for id: 0 Destructor called for id: 1 Destructor called for id: 2 Destructor called for id: 3 Destructor called for id: 4 Destructor called for id: 7>
Fapt interesant (concept rar cunoscut)
De ce dam punct și virgulă la sfârșitul orei?
Mulți oameni ar putea spune că este o sintaxă de bază și ar trebui să dăm un punct și virgulă la sfârșitul clasei, așa cum o definește regula în cpp. Dar principalul motiv pentru care punct și virgulă sunt acolo la sfârșitul clasei este verificările compilatorului dacă utilizatorul încearcă să creeze o instanță a clasei la sfârșitul acesteia.
Da, la fel ca structura și uniunea, putem crea și instanța unei clase la sfârșit, chiar înainte de punct și virgulă. Ca rezultat, odată ce execuția ajunge la acea linie, creează o clasă și alocă memorie instanței tale.
C++
stive de java
#include> using> namespace> std;> > class> Demo{> >int> a, b;> >public>:> >Demo()>// default constructor> >{> >cout <<>'Default Constructor'> << endl;> >}> >Demo(>int> a,>int> b):a(a),b(b)>//parameterised constructor> >{> >cout <<>'parameterized constructor -values'> << a <<>' '><< b << endl;> >}> > }instance;> > > int> main() {> > >return> 0;> }> |
>
>Ieșire
Default Constructor>
Putem vedea că am creat o instanță de clasă Demo cu instanța de nume, ca rezultat, rezultatul pe care îl vedem este Default Constructor este apelat.
În mod similar, putem apela și constructorul parametrizat doar pasând valori aici
C++
redenumiți un director linux
#include> using> namespace> std;> > class> Demo{> >public>:> >int> a, b;> >Demo()> >{> >cout <<>'Default Constructor'> << endl;> >}> >Demo(>int> a,>int> b):a(a),b(b)> >{> >cout <<>'parameterized Constructor values-'> << a <<>' '><< b << endl;> >}> > > > }instance(100,200);> > > int> main() {> > >return> 0;> }> |
>
>Ieșire
parameterized Constructor values-100 200>
Deci, creând o instanță chiar înainte de punct și virgulă, putem crea Instanța clasei.
Articole similare:
- Moștenire multiplă în C++
- Distrugător virtual pur
- Test C++