Latest web development tutorials

C ++ modificador de acceso de clases

Clase C ++ y objetos Clase C ++ y objetos

programación orientada a objetos de datos Hidden es una característica importante, que impide el acceso directo a la función de miembro interno de un tipo de clase. El acceso está restringido por los miembros de la clase en el interior del cuerpo principal de cada región marcadapública, privada, protegida especificar.Palabras clave pública, protegido denominado especificador de acceso privado.

Una clase puede tener más de una zona pública, privada o protegida de marca. Antes de cada zona etiquetada área marcada siguiente principio o al final del cuerpo de la clase antes de reunirse con el paréntesis son válidos. Los modificadores de acceso predeterminado y miembros de la clase son privados.

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

Público Miembro (público)

miembrodel público en el programa fuera de la clase son accesibles.No se puede utilizar cualquiera de las funciones miembro para establecer y obtener el valor de las variables públicas, de la siguiente manera:

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

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Length of line : 6
Length of line : 10

Privado miembro (privada)

variables miembroprivadas o funciones fuera de la clase no es accesible, incluso imposible de ver.Sólo las clases y función friend pueden tener acceso a los miembros privados.

Por defecto, todos los miembros de la clase son privados. Por ejemplo, en laclase siguiente, el ancho es de miembros privados, lo que significa que si no se utiliza ningún modificador de acceso, los miembros de la clase se supone que son miembros privados:

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

En la práctica, por lo general, definimos los datos en el ámbito privado, como se define en el área relevante de las funciones públicas a las afueras de la clase también puede invocar estas funciones de la siguiente manera:

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

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Length of box : 10
Width of box : 10

Protección (protegidas) miembros

variables miembroprotegidas o funciones con miembros privados es muy similar, pero un poco diferente, para proteger a los miembros de la clase derivada (es decir, subclases) son accesibles.

En la siguiente sección, aprenderá las clases derivadas del conocimiento y la herencia. Ahora se puede ver los siguientes ejemplos, que se deriva de lacaja de la clase padre Una subclase smallBox.

El siguiente ejemplo es similar a los ejemplos anteriores, donde elancho de cualquier miembro puede ser un derivado de acceso a las funciones miembro de la clase 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;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Width of box : 5

Clase C ++ y objetos Clase C ++ y objetos