Составители:
Рубрика:
25
//Определение областей видимости компонент для класса, объявленного через class
class MyClass
{ … //здесь определяются частные компоненты класса
protected:
… //здесь определяются защищенные компоненты класса
public:
… //здесь определяются общедоступные компоненты класса
private:
… //здесь определяются частные компоненты класса
};
Изменим тело класса array так, чтобы он полностью удовлетворял требова-
ниям принципа инкапсуляции.
//Листинг 10.Переопределение класса «массив целых чисел» с ограничением прав доступа к
//внутренней реализации объекта
class array
{ int *mas, n;
public:
array(int k) {…} //конструктор и деструктор должны быть общедоступными.
~array() {…} // Иначе нельзя будет создать и уничтожить объект класса
ReadMas() {…}
WriteMas(){…}
};
main()
{array m(5);
m.n=10; //Ошибка!!! Компонент n частный и доступ к нему из функции main запрещен
m.ReadMas(); // Метод RadMas – общедоступный, что допускает обращение к нему
из
// внешней функции main()
}
После определения класса приведенным в последнем примере способом, об-
ращение к компонентам n и mas разрешено только из методов класса. Функция
main() не является методом класса и обращаться в ней к частным компонентам
класса запрещено, что и отмечено в примере. Попытка откомпилировать данный
пример приведет к ошибке на этапе компиляции программы «array::n is not acces-
sible»
В языке С++ существует возможность обращения к частным компонентам
класса из функций, не являющихся методом данного класса, такие функции назы-
ваются дружественными, подробнее речь о них пойдет в главе 3.6.
//Определение областей видимости компонент для класса, объявленного через class class MyClass { … //здесь определяются частные компоненты класса protected: … //здесь определяются защищенные компоненты класса public: … //здесь определяются общедоступные компоненты класса private: … //здесь определяются частные компоненты класса }; Изменим тело класса array так, чтобы он полностью удовлетворял требова- ниям принципа инкапсуляции. //Листинг 10.Переопределение класса «массив целых чисел» с ограничением прав доступа к //внутренней реализации объекта class array { int *mas, n; public: array(int k) {…} //конструктор и деструктор должны быть общедоступными. ~array() {…} // Иначе нельзя будет создать и уничтожить объект класса ReadMas() {…} WriteMas(){…} }; main() {array m(5); m.n=10; //Ошибка!!! Компонент n частный и доступ к нему из функции main запрещен m.ReadMas(); // Метод RadMas – общедоступный, что допускает обращение к нему из // внешней функции main() } После определения класса приведенным в последнем примере способом, об- ращение к компонентам n и mas разрешено только из методов класса. Функция main() не является методом класса и обращаться в ней к частным компонентам класса запрещено, что и отмечено в примере. Попытка откомпилировать данный пример приведет к ошибке на этапе компиляции программы «array::n is not acces- sible» В языке С++ существует возможность обращения к частным компонентам класса из функций, не являющихся методом данного класса, такие функции назы- ваются дружественными, подробнее речь о них пойдет в главе 3.6. 25
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »