Latest web development tutorials

C ++ modificatore di accesso di classe

C ++ Class & Objects C ++ Class & Objects

Hidden dati programmazione orientata agli oggetti è una caratteristica importante, che impedisce l'accesso diretto alla funzione di membro interno di un tipo di classe. L'accesso è limitato dai membri della classe all'interno del corpo principale di ogni regione ha segnatopubblico, privato, protetto da specificare.Parole pubblica, privata, protetta denominata accesso specificatore.

Una classe può avere più di una zona pubblica, protetto o privato di marca. Prima di ogni zona con etichetta segnato area successiva all'inizio o alla fine del corpo della classe prima di incontrare la parentesi destra sono validi. I modificatori di accesso di default e membri della classe sono privati.

class Base {
 
   public:
 
  // public members go here
 
   protected:
 
  // protected members go here
 
   private:
 
  // private members go here
 
};

Pubblico Membro (pubblico)

membropubblica nel programma di fuori della classe sono accessibili.Non è possibile utilizzare tutte le funzioni membro per impostare e ottenere il valore delle variabili pubbliche, come segue:

#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      double length;
      void setLength( double len );
      double getLength( void );
};
 
// 成员函数定义
double Line::getLength(void)
{
    return length ;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
// 程序的主函数
int main( )
{
   Line line;
 
   // 设置长度
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <<endl;
 
   // 不使用成员函数设置长度
   line.length = 10.0; // OK: 因为 length 是公有的
   cout << "Length of line : " << line.length <<endl;
   return 0;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Length of line : 6
Length of line : 10

Privato Utente (privato)

variabili membroprivate o funzioni al di fuori della classe non è accessibile, se non impossibile da vedere.Solo le classi e funzioni amico può accedere ai membri privati.

Per impostazione predefinita, tutti i membri della classe sono privati. Ad esempio, nella seguenteclasse, la larghezza è un soci privati, il che significa che se non si utilizza i modificatori di accesso, i membri della classe saranno assunti come soci privati:

class Box
{
   double width;
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
};
 

In pratica, in genere definire i dati nell'area privata, così come definito nel settore di competenza delle funzioni pubbliche al di fuori della classe può anche invocare queste funzioni nel modo seguente:

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
 
   private:
      double width;
};
 
// 成员函数定义
double Box::getWidth(void)
{
    return width ;
}
 
void Box::setWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( )
{
   Box box;
 
   // 不使用成员函数设置长度
   box.length = 10.0; // OK: 因为 length 是公有的
   cout << "Length of box : " << box.length <<endl;
 
   // 不使用成员函数设置宽度
   // box.width = 10.0; // Error: 因为 width 是私有的
   box.setWidth(10.0);  // 使用成员函数设置宽度
   cout << "Width of box : " << box.getWidth() <<endl;
 
   return 0;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Length of box : 10
Width of box : 10

Protezione (protetti) membri

variabili membroprotetto o funzioni con soci privati è molto simile, ma un po 'diverso, per proteggere i membri della classe derivata (vale a dire, le sottoclassi) sono accessibili.

Nella sezione successiva, imparerete le conoscenze classi derivate e l'ereditarietà. Ora è possibile vedere gli esempi seguenti, deriviamo dallascatola classe padre Una sottoclasse smallBox.

L'esempio che segue è simile agli esempi precedenti,in cui la larghezzadi qualsiasi membro può essere un membro della classe derivata accesso alle funzioni smallBox.

#include <iostream>
using namespace std;
 
class Box
{
   protected:
      double width;
};
 
class SmallBox:Box // SmallBox 是派生类
{
   public:
      void setSmallWidth( double wid );
      double getSmallWidth( void );
};
 
// 子类的成员函数
double SmallBox::getSmallWidth(void)
{
    return width ;
}
 
void SmallBox::setSmallWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( )
{
   SmallBox box;
 
   // 使用成员函数设置宽度
   box.setSmallWidth(5.0);
   cout << "Width of box : "<< box.getSmallWidth() << endl;
 
   return 0;
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Width of box : 5

C ++ Class & Objects C ++ Class & Objects