Latest web development tutorials

C ++ accès classe modificateur

Classe C ++ & Objets Classe C ++ & Objets

la programmation orientée objet de données Caché est une caractéristique importante, ce qui empêche un accès direct à la fonction de membre interne d'un type de classe. L' accès est limité par les membres de la classe à l' intérieur du corps principal de chaque région marquéepublic, privé, protégé de préciser.Mots-clés public, privé, protégé appelé spécificateur d'accès.

Une classe peut avoir plus d'une zone publique, protégée ou privée de marque. Avant chaque zone étiquetée zone marquée prochain démarrage ou la fin du corps de la classe avant de rencontrer la parenthèse droite sont valides. Les modificateurs d'accès par défaut et les membres de la classe sont privées.

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

Public Membre (public)

membre dupublic dans le programme à l' extérieur de la classe sont accessibles.Vous ne pouvez pas utiliser toutes les fonctions membres pour définir et obtenir la valeur des variables publiques, comme suit:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Length of line : 6
Length of line : 10

Privé membre (privé)

variables ou fonctions membresprivées en dehors de la classe ne sont pas accessibles, même impossible de voir.Seules les classes et la fonction ami peut accéder aux membres privés.

Par défaut, tous les membres de la classe sont privées. Par exemple, dans laclasse suivante, la largeur est d' initiative parlementaire, ce qui signifie que si vous ne l' utilisez tous les modificateurs d'accès, les membres de la classe seront supposés être membres privés:

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

Dans la pratique, nous définissons généralement les données dans le domaine privé, tel que défini dans la zone concernée des fonctions publiques à l'extérieur de la classe peut également invoquer ces fonctions comme suit:

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Length of box : 10
Width of box : 10

Protection des membres (protégés)

variables membresprotégées ou des fonctions avec des membres privés est très similaire, mais un peu différent, pour protéger les membres de la classe dérivée (c. -à- sous - classes) sont accessibles.

Dans la section suivante, vous allez apprendre les connaissances des classes dérivées et l'héritage. Maintenant , vous pouvez voir les exemples suivants, nous tirons de laboîte de classe parent Une sous - classe smallBox.

L'exemple suivant est similaire aux exemples précédents, où lalargeur d'un membre peut être un accès fonction smallBox membre de la classe dérivée.

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Width of box : 5

Classe C ++ & Objets Classe C ++ & Objets