Программирование |
|||||||||||||||||||||
JAVASCRIPT
Языки программирования Статьи |
ИнкапсуляцияОсновным способом организации информации в C++ являются классы. В отличие от структуры (struct) языка C, которая может состоять только из полей и вложенных типов, класс (class) C++ может состоять из полей, вложенных типов и функций-членов (member functions). Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными (открытыми, public), защищёнными (protected) и собственными (закрытыми, приватными, private). В C++ структуры формально отличаются от классов лишь тем, что по умолчанию члены и базовые классы у структуры публичные, а у класса — собственные.
Проверка доступа происходит во время компиляции, попытка обращения к недоступному члену класса вызовет ошибку компиляции. Пример класса, реализующего одномерный массив (это просто иллюстрация, а не образец дизайна!):
class Array
{ public: Array() : len(0), val(NULL) {} Array(int _len) : len(_len) { val = new double[_len]; } Array(const Array & a); ~Array() { Free(); } inline const double & Elem(int i) const { return val[i]; } inline void ChangeElem(int i, double x) { val[i] = x; } protected: void Alloc(int _len) { if (len == 0) Free(); len = _len; val = new double[len]; } void Free() { delete [] val; len = 0; } int len; double * val; }; Здесь класс Array имеет 2 публичных функции-члена, 2 защищённых поля, 3 публичных конструктора и публичный деструктор. Описатель inline означает подсказку компилятору, что вместо вызова функции её код следует встроить в точку вызова, чем часто можно достичь большей эффективности. |