C'è una differenza sostanziale tra rendere la classe pubblica e rendere pubblici i suoi contenuti.
Se si definisce la classe in un file di inclusione (file .h), si rende pubblica la classe. Ogni altro file sorgente che include questo file include saprà di questa classe e può ad es. avere un puntatore ad esso.
L'unico modo per rendere privata una classe, è mettere la sua definizione in un file sorgente (.cpp).
Anche quando rendi pubblico un corso, non devi necessariamente rendere pubblico il contenuto della tua classe. L'esempio che segue è un estremo uno:
class MyClass
{
private:
MyClass();
~MyClass();
void setValue(int i);
int getValue() const;
};
Se questa definizione viene messo in un file di inclusione, ogni altra fonte può fare riferimento a (avere un puntatore a) questa classe, ma dal momento che tutti i metodi della classe sono privati nessuna altra fonte può costruirlo, distruggerlo, impostare il suo valore o ottenere il suo valore.
a fare la contenuto di una classe pubblica mettendo metodi da esso nella parte 'pubblica' della definizione della classe, come questo:
class MyClass
{
public:
MyClass();
~MyClass();
int getValue() const;
private:
void setValue(int i);
};
Ora tutti possono costruire e distruggere le istanze di questa classe, e potrebbe anche ottenere il valore. L'impostazione del valore tuttavia non è pubblica, quindi nessuno è in grado di impostare il valore (tranne la classe stessa).
Se si vuole fare il pubblico di classe per solo qualche altra classe della vostra applicazione, ma non per l'applicazione completa, si dovrebbe dichiarare che altra classe un amico, ad esempio:
class SomeOtherClass;
class MyClass
{
friend SomeOtherClass;
public:
MyClass();
~MyClass();
int getValue() const;
private:
void setValue(int i);
};
Ora, SomeOtherClass maggio accedi a tutti i metodi privati da MyClass, quindi può chiamare setValue per impostare il valore di MyClass. Tutte le altre classi sono ancora limitate ai metodi pubblici.
Sfortunatamente, non c'è modo in C++ di rendere solo una parte della classe pubblica in un insieme limitato di altre classi. Quindi, se fai diventare un'altra classe un amico, è in grado di accedere a tutti i metodi privati. Pertanto, limitare il numero di amici.
si dovrebbe prendere un buon libro C++. Ci sono molti thread SO che ti consiglieranno. –