Beste antwoord
Openbaar en privé zijn beschermingsmechanismen voor onze klassen in C ++. Als een variabele / functie van een lid openbaar is, kan deze overal binnen de klas worden gebruikt. Als een lidvariabele / functie privé is, is deze alleen toegankelijk via lidfuncties van die klasse.
Het is een goed idee om gebruik privé als je kunt. We willen niet dat de eindgebruiker toegang heeft tot gegevens die ze niet zouden moeten hebben. Stel je voor dat ik een programma aan het schrijven ben waarmee een gebruiker een kaartspel kan spelen. Eerst zal het programma de kaarten die de speler heeft, afdrukken. Vervolgens voert de gebruiker in welke kaart hij wil spelen. In dit geval zou ik waarschijnlijk willen dat de kaarten op de een of andere manier privé zijn. Ik wil niet dat de gebruiker de kaarten verandert en kaarten maakt die niet bestaan.
Om toegang te krijgen tot variabelen / functies van privé-leden, kun je openbare functies gebruiken. Als ik bijvoorbeeld een privévariabele heb met de naam int-nummer, zou ik een openbare ledenfunctie kunnen schrijven om toegang te krijgen tot die variabele, genaamd getNumber (). Op deze manier heb ik toegang tot het nummer en kan ik het overal gebruiken, maar ik hoef me geen zorgen te maken dat het nummer verkeerd wordt gebruikt.
class Count{
public:
/*numberPub can be used anywhere in the class Count */
int numberPub;
/*This will return our private variable, numberPri. This way, we can return the variable, but we do not have to worry about access, such as a user modifying the value when they shouldn"t. */
int getNumberPri();
private:
/*numberPri cannot be used anywhere in the class Count. If we want to use numberPri in Count, we must use getNumberPri() to access it*/
int numberPri;
};
Antwoord
In C ++ betekent private dat het alleen intern door de klas kan worden gebruikt en niet toegankelijk is buiten de genoemde klasse, terwijl openbaar betekent dat deze toegankelijk is buiten de klasse.
Als u bijvoorbeeld een instantie van uw klasse maakt, hebt u geen directe toegang tot de privévariabelen en methoden, en dit zal een foutmelding als u dit probeert.
class Example
{
private:
int private\_data;
int public\_data;
};
int main(int argc, char* argv[])
{
// create an instance
Example example;
// public variables and methods can be accessed
example.public\_data = 100;
// private variables and methods can only be accessed inside
// the class
// this next line will cause an error
example.private\_data = 1;
return 0;
}