Ano ang Pagkakaiba sa pagitan ng Pribado at Protektadong Mga Miyembro ng Mga Klase ng C++

Ano Ang Pagkakaiba Sa Pagitan Ng Pribado At Protektadong Mga Miyembro Ng Mga Klase Ng C



Ang C++ ay isang object-oriented programming (OOP) na wika na nagbibigay ng mekanismo upang i-encapsulate ang data at mga function sa isang entity na tinatawag na isang klase. Ang isa sa mga mahahalagang tampok ng klase ay ang kakayahang tukuyin ang antas ng pag-access para sa mga miyembro nito. Sa Object-Oriented Programming, access specifiers ay ginagamit upang kontrolin ang visibility at accessibility ng mga field at pamamaraan ng isang klase. Pinoprotektahan , pampubliko , at pribado Ang mga antas ng pag-access ay ang tatlong pangunahing uri ng mga antas ng pag-access sa C++.

Sa writeup na ito, tatalakayin natin ang pagkakaiba sa pagitan ng dalawang pangunahing access specifier s, pribado at protektado mga miyembro ng isang klase ng C++.

Pribadong Access Specifier

Mga pribadong miyembro ay ipinahayag gamit ang keyword na ' pribado '. Ang pribadong access specifier nililimitahan ang pag-access sa mga miyembro ng klase sa klase lamang mismo. Ang code sa labas ng klase ay hindi makaka-access o makakapagpabago ng pribadong miyembro. Nangangahulugan iyon na ang mga pamamaraan lamang na idineklara sa klase ang maaaring ma-access at gumana sa pribadong miyembro , kahit na ang mga nagmula na klase ay hindi makaka-access pribadong miyembro . Isang karaniwang paggamit ng pribadong miyembro ay upang matiyak ang tamang operasyon ng isang klase. Mga pribadong miyembro ay ginagamit upang i-encapsulate ang data ng klase at magbigay ng antas ng abstraction sa mga gumagamit ng klase.







#include
gamit namespace std ;

klase manlalaro {

pribado :
pangalan ng string ;
int edad ;

pampubliko :
walang bisa getPlayer ( )
{
cout << 'Ilagay ang pangalan: ' ;
kumakain >> pangalan ;
cout << 'Ilagay ang edad:' ;
kumakain >> edad ;
}
walang bisa showPlayer ( )
{
cout << 'Pangalan: ' << pangalan << endl ;
cout << 'Edad:' << edad << endl ;
}
} ;

int pangunahing ( )
{
manlalaro pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

bumalik 0 ;
}

Sa code sa itaas, ginagamit namin ang mga pamamaraan ng pampublikong miyembro getPlayer() at showPlayer() para ma-access ang dalawa pribado mga miyembro pangalan at edad . Ang getPlayer() Nakukuha ng function ang input mula sa mga user at ipinapakita ito sa screen sa pamamagitan ng showPlayer() function.



Output







Protektadong Access Specifier

Mga protektadong miyembro ng isang klase ay maaaring ma-access ng parehong mga nagmula na klase at ang mga function ng miyembro ng klase mismo. Mga protektadong miyembro ay ginagamit upang magbigay ng antas ng access sa mga nagmula na klase nang hindi inilalantad ang mga detalye ng pagpapatupad sa labas ng mundo. Mga protektadong miyembro ay ipinahayag gamit ang keyword na ' protektado ' at ang colon (:) karakter. Mga protektadong miyembro payagan ang isang klase na mapalawak at mabago, nang hindi nakompromiso ang integridad nito. Maaaring gamitin ng isang nagmula na klase mga protektadong miyembro upang pinuhin o i-customize ang pag-uugali ng isang batayang klase.

Narito ang isang halimbawa ng isang klase na may mga protektadong miyembro :



#include
gamit ang namespace std;

manlalaro ng klase {
pribado:
pangalan ng string;
int edad;

protektado:
int layunin;

publiko:
walang bisa getPlayer ( )
{
cout <> pangalan;
cout <> edad;
}
walang bisa showPlayer ( )
{
cout << 'Pangalan: ' << pangalan << endl;
cout << 'Edad:' << edad << endl;
}
} ;

class player1 : pampublikong manlalaro {

pribado:
string bansa;

publiko:
void set_goals ( int g )
{
layunin = g;
}
walang bisa getPlayer1 ( )
{
getPlayer ( ) ;
cout <> bansa;
}
walang bisa showPlayer1 ( )
{
cout << 'mga layunin: ' << mga layunin << endl;
showPlayer ( ) ;
cout << 'Bansa:' << bansa << endl;
}
} ;

int pangunahing ( )
{
manlalaro1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

bumalik 0 ;
}

Ang manlalaro ang klase ay binubuo ng dalawa pribadong miyembro , pangalan at edad , isa protektado miyembro, mga layunin , at pribado ang mga miyembro ay ginagamit sa loob ng pampubliko mga tungkulin ng miyembro, getPlayer() at showPlayer() . May dalawang klase, manlalaro at manlalaro1 , na parehong mga batayang klase. Isa pribado miyembro, bansa , at tatlo pampubliko mga pamamaraan ng miyembro ang bumubuo sa manlalaro1 klase. Set_goals() ay ginagamit upang baguhin ang protektadong miyembro layunin' halaga. getPlayer1() tumatawag sa getPlayer() tungkulin ng miyembro ng manlalaro klase habang kinukuha din ang input para sa bansa. Katulad nito, showPlayer1() tumatawag sa showPlayer() function ng miyembro at ini-print ang mga layunin at bansa mga halaga.

Output

Pagkakaiba sa Pagitan ng Pribado at Protektadong Miyembro ng Mga Klase ng C++

Narito ang ilan sa mga pangunahing pagkakaiba sa pagitan Pribado at Pinoprotektahan mga miyembro ng mga klase ng C++.

1: Saklaw at Pag-andar

Kapag isinasaalang-alang ang paggamit ng mga access specifier, mahalagang pag-isipang mabuti ang tungkol sa saklaw at functionality ng programa. A pribadong access specifier nagbibigay ng pinakamataas na antas ng seguridad at iniiwasan ang hindi sinasadyang pag-access sa mga variable at pamamaraan. Sa kabilang banda, a protektadong access specifier nag-aalok ng mas malawak na hanay ng accessibility at flexibility, na mahalaga kapag nagpaplanong magmana ng mga nagmula na klase mula sa isang baseng klase.

2: Antas ng Access

Ang pangunahing pagkakaiba sa pagitan ng pribado at mga protektadong miyembro ay ang antas ng pag-access na ibinibigay nila. Pinoprotektahan ang mga miyembro ay maaaring ma-access ng parehong mga nagmula na klase ng klase at mga function ng miyembro, ngunit pribado ang mga miyembro ay maaari lamang makuha sa pamamagitan ng mga function ng miyembro ng klase.

3: Encapsulation ng Klase

Isa pang mahalagang pagkakaiba sa pagitan ng pribado at protektado mga miyembro ang kanilang tungkulin sa pagpapanatili ng encapsulation ng klase. Upang ihiwalay ang data at bigyan ang mga user ng klase ng ilang antas ng abstraction, pribado ang mga miyembro ay may trabaho. Pinoprotektahan ang mga miyembro ay nagtatrabaho upang pamahalaan ang inheritance structure at magbigay ng access sa mga batayang miyembro ng klase sa pamamagitan ng mga nagmula na klase.

Pangwakas na Kaisipan

Pribado at mga protektadong miyembro ay ang dalawang mahahalagang antas ng pag-access sa klase ng C++. Ang pribado ang access specifier ay ginagawang hindi naa-access ang mga miyembro ng klase sa lahat ng mga panlabas na gumagamit, at ginagamit ito upang panatilihin ang impormasyon pribado sa loob ng klase. Sa kaibahan, a protektado ang access specifier ay nagbibigay-daan sa pag-access sa mga miyembro ng klase sa pamamagitan lamang ng mga nagmula na klase, ay ginagamit upang magbigay ng base class functionality at pinapayagan ang pagbabago nang hindi binabago ang pag-uugali ng base class. Ang antas ng pag-access ng mga miyembro ng klase ay gumaganap ng isang mahalagang papel sa pagpapanatili ng encapsulation ng klase at pagbibigay ng antas ng access sa mga gumagamit ng klase.