Latest web development tutorials

C ++ modyfikator dostępu klasa

C ++ klasy i obiekty C ++ klasy i obiekty

Ukryty programowania obiektowego danych jest ważną cechą, która uniemożliwia bezpośredni dostęp do wewnętrznej funkcji członka typu klasy. Dostęp jest ograniczony przez członków klasowych wewnątrz główny korpus każdego regionu oznaczonepubliczne, prywatne, chronione określić.Słowa kluczowe public, private, protected nazywa dostępu specifier.

Klasa może mieć więcej niż jedną publiczną lub prywatną strefę chronione markowych. Przed każdym oznakowane strefy oznaczony obszar obok rozpoczęcia lub zakończenia korpusu klasy przed spotkaniem prawy nawias są ważne. Modyfikatory dostępu domyślny i członkowie klasy są prywatne.

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

Publiczna (public) członkiem

członkiemspołeczeństwa w programie poza klasy są dostępne.Nie można używać żadnych funkcji składowych ustawić i uzyskać wartość zmiennych publicznych, co następuje:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Length of line : 6
Length of line : 10

Prywatny (prywatny) członkiem

Prywatne zmienne składowe lub funkcji poza klasą nie jest dostępne, a nawet niemożliwe do zobaczenia.Tylko klasy i przyjaciel funkcja może uzyskać dostęp członków prywatnych.

Domyślnie wszyscy członkowie tej klasy są prywatne. Na przykład w poniższejklasie, szerokość prywatnej użytkowników, co oznacza, że jeśli nie stosować żadnych modyfikatorów dostępu, członkowie klasy będą traktowane jako członkowie prywatne:

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

W praktyce na ogół zdefiniowania danych w obszarze prywatnym, jak określono w odpowiednim zakresie zadań publicznych na zewnątrz klasa może również wywołać te funkcje w następujący sposób:

#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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Length of box : 10
Width of box : 10

Protection (ochrona) członków

Chronione zmienne składowe i funkcje z członków prywatnych jest bardzo podobny, ale trochę inny, aby chronić członków klasy pochodnej (tj podklasy) są dostępne.

W następnym rozdziale dowiesz się wiedza klas pochodnych i dziedziczenia. Teraz można zobaczyć następujące przykłady, że wywodzą się z klasy nadrzędnejBox Podklasa smallBox.

Poniższy przykład jest podobny do poprzednich przykładów, gdzieszerokość każdego członka mogą być uzyskane członkiem klasy Funkcja dostępu 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;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Width of box : 5

C ++ klasy i obiekty C ++ klasy i obiekty