Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос про Спецификаторы доступа Public и Private - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Строки, Функции http://www.cyberforum.ru/cpp-beginners/thread374047.html
Всем доброго времени суток. Нужна помощь в решении. Строки 1. Символьная строка заканчивается восклицательным знаком (!). Слова в ней отделены друг от друга точкой с запятой ( ; ). Найти те...
C++ тупняк с virtual :) Здравствуйте. пытаюсь прикрутить икслючения к своему "модулю", и натыкаюсь на ругань компилятора: error: expected unqualified-id before ‘virtual’ А дело делается так: class cfg_exception:... http://www.cyberforum.ru/cpp-beginners/thread374039.html
C++ Метод скальзящего среднего
дан двумерный массив (300 строк и 3 столбца: ФИО, порядковый номер получки, величина выплат) - значения зарлаты вариируются винтервале от 1000 до 25000 равновероятно. Написать программу,...
dxflib Чтение DXF файлов C++
Есть задача считать DXF файл. Остановился на dxflib. Все считывается нормально, но в некоторых файлах появляется посторонняя фигура, указывающая на ноль. К примеру в A9CAD маленький треугольник....
C++ Как ввести двумерный массив с клавиатуры? Его размерность [n][m] нужно задавать с клавиатуры. http://www.cyberforum.ru/cpp-beginners/thread373998.html
Привет всем. Как ввести двумерный массив с клавиатуры? Его размерность нужно задавать с клавиатуры.
C++ Вычислить и вывести на экран в виде таблицы значения функции помогите сделать пару задач плз) sinx/x=\sum({-1}^{n}*{x}^{2n})/(2n+1)! это 1-ая задача вот 2-ая вычислить и вывести на экран в виде таблицы значения функции F на интервале от Xнач до Xкон с... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4984 / 3041 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.10.2011, 18:20
iluxa1810, вы не в ту степь лезете. Здесь вам не защита информации. Суть разбиения на области доступа в том, чтобы можно было независимо от клиентского кода менять внутреннюю реализацию класса. Т.е. если мы сразу закроем всё внутреннее устройство, то клиент заведомо не сможет построить свой код вокруг закрытых (и в перспективе изменяемых) частей.
Например, раньше наш вектор хранил явно количество элементов (в виде публичной переменной). И был у вектора метод size. Но клиенты же самые умные, зачем им затраты на вызов метода? Поэтому они во всех своих циклах использовали эту самую открытую переменную. Но тут вдруг нам захотелось поменять метод вычисления размера, не хранить его в переменной, а вычислять как разность адресов начала и конца (и хранить эти адреса). Т.е. мы вообще изъяли из кода класса переменную m_size. Что будет? А ничего особенного, просто весь клиентский код полетит к чертям, его придётся переписывать.
Но закрой мы изначально эту переменную, клиенты были бы вынуждены использовать метод size. И после изменения внутреннего представления размера они бы об этом даже не узнали (они и раньше не знали, как класс устроен изнутри, с чего бы им теперь вдруг что-то заметить?)
Вот зачем (вкратце) нужны спецификаторы доступа.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru