Nejlepší odpověď
Veřejné a soukromé jsou ochranné mechanismy pro naše třídy v C ++. Pokud je členská proměnná / funkce veřejná, lze ji použít kdekoli v rámci třídy. Pokud je členská proměnná / funkce soukromá, lze k ní přistupovat pouze prostřednictvím členských funkcí dané třídy.
Je dobrý nápad používat soukromé, když můžete. Nechceme, aby koncový uživatel měl přístup k údajům, které by neměl. Představte si například, že píšu program, který uživateli umožní hrát hru karet. Nejprve program vytiskne karty, které hráč má. Poté uživatel zadá, jakou kartu by chtěl hrát. V tomto případě bych pravděpodobně chtěl, aby byly karty nějakým způsobem soukromé. Nechci, aby uživatel vyměnil karty a vytvořil karty, které neexistují.
Pro přístup k soukromým proměnným / funkcím členů můžete použít veřejné funkce. Například pokud mám soukromou proměnnou nazvanou int number, mohl bych napsat veřejnou členskou funkci pro přístup k této proměnné s názvem getNumber (). Tímto způsobem mohu získat přístup k číslu a použít ho kdekoli, ale nemusím si dělat starosti s nesprávným používáním čísla.
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;
};
Odpověď
V C ++ private znamená, že jej může interně používat pouze třída a nelze k němu přistupovat mimo uvedenou třídu, zatímco public znamená, že k ní lze přistupovat mimo třídu.
Pokud například vytvoříte instanci své třídy, nemůžete přímo přistupovat k soukromým proměnným a metodám a způsobí to chyba, pokud se o to pokusíte.
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;
}