Latest web development tutorials

C ++ модификатор доступа класса

Класса C ++ и объекты Класса C ++ и объекты

Скрытые данные объектно-ориентированное программирование является важным элементом, который предотвращает прямой доступ к внутренней функции члена типа класса. Доступ ограничен членами класса внутри основной корпус каждого региона отмеченыгосударственные, частные, защищенные указать.Ключевые слова государственный, частный, защищенный называется Спецификатор доступа.

Класс может иметь более чем один публичный, защищенный или частную фирменную зону. Перед каждой маркированы зона отмечена область следующем запуске или конец тела класса перед встречей с правая скобка действительны. Модификаторы доступа по умолчанию и члены класса являются частными.

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

Открытое (публичное) член

Общественный член в программе вне класса доступны.Вы не можете использовать любые функции-члены, чтобы установить и получить значение публичных переменных, следующим образом:

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

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Length of line : 6
Length of line : 10

Частный (частный) член

Частные переменные - члены или функции вне класса не доступен, даже невозможно увидеть.Только классы и функции друг может получить доступ к закрытым членам.

По умолчанию все члены класса являются частными. Например, в следующемклассе, ширина является частным членов, а это значит , что если вы не используете какие - либо модификаторы доступа, члены класса будут считать частные члены:

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

На практике мы обычно определяют данные в частной области, как это определено в соответствующей области общественных функций за пределы класса также могут вызывать эти функции следующим образом:

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

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Length of box : 10
Width of box : 10

Защита (защищенные) члены

Защищенные переменные - члены или функции с частными членами очень похожи, но немного по- другому, чтобы защитить членов производного класса (т.е., подклассов) доступны.

В следующем разделе вы узнаете знания, полученные классы и наследование. Теперь вы можете увидеть следующие примеры, мы выводим из родительского классаBox подкласс smallBox.

Следующий пример аналогичен предыдущим примерам, гдеширина любого элемента может быть получен членом класса доступа к функциям 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;
}

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Width of box : 5

Класса C ++ и объекты Класса C ++ и объекты