|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.09.2013, 15:42 | #31 | |||
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Цитата:
Большинство учебников не заостряют внимание новичка на причинах (слишком рано забить таким голову), а просто преподносят материал, как данность. В последствии, новичок становится профессионалом. Но по прежнему слепо действует в рамках канонических правил, просто потому что уже настолько привык к ним, что для него они становятся чем-то сами собой разумеющимися, не требующим осмысления. Попытайтесь проследить за моей мыслью: "Если нам нужна гибкость - мы пишем год так, что бы он был гибким" - это настолько очевидно, что не оставляет места для критической оценки. Раз нужно - значит нужно делать. Здесь нет никакого выбора действий. "Если нам не нужна гибкость, то... что мы делаем" ? Вы почему то думаете: Каноничное утверждение безотносительное к причинам. Если вам не нужна гибкость, вы все равно будете писать гибко, потому что писать негибко - это плохо. Часы программиста стоят дорого. На что вы тратите деньги компании? Зачем вы предлагаете тратить время на то, что никому не нужно? Цитата:
Что касается простоты: самый простой, самый идеальный код - тот, который не был написан. |
|||
05.09.2013, 18:30 | #32 |
Форумчанин
Регистрация: 22.04.2013
Сообщений: 588
|
Спасибо огромное!!!!!
Отличается конструктор в public и в private ?? Можно ли в оном конструкторе инициализировать оба этих типа переменных сразу? Можно ли их перегрузить-один в public один в private? |
05.09.2013, 18:49 | #33 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
public, private - спецификторы доступа. Они образуют правила областей видимости для идентификаторов-членов класса. public - идентификатор, объявленный в этой области видимости, видим вне класса. private - идентификатор, объявленный в этой области видимости, видим только внутри класса.
Есть еще один спецификатор доступа - protected. Действует точно также как private, за исключенем того, что идентификаторы, объявленные в protected-области видимости базового класса, БУДУТ ВИДИМЫ ТОЛЬКО ВНУТРИ производного (от этого базового) класса. Отсюда, перегрузить конструктор можно в private области, только вот использовать такой перегруженный конструктор для создания объекта в клиентском коде не сможем... т.к он видим только внутри класса. Последний раз редактировалось Igor95; 05.09.2013 в 19:09. |
05.09.2013, 19:10 | #34 |
Форумчанин
Регистрация: 22.04.2013
Сообщений: 588
|
Спасибо!!!
|
05.09.2013, 20:05 | #35 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Во-первых, инкапсуляция существует на уровне "пользователь - инструмент". Позволяет использовать инструмент, не зная подробностей его реализации. Программист, который лезет в чужой код и изменяет его - это уже не пользователь. Это разработчик. И он должен знать и понимать, что именно он делает. Поэтому, ни о какой инкапсуляции речи уже не идет. Во-вторых, именованная константа eMAXIMUM для того и существует, что бы абстрагироваться от конкретного значения константы, и отталкиваться только от её имени. Поэтому, можно как угодно менять её значение. eMAXIMUM всегда будет просто eMAXIMUM. Пример: http://codepad.org/VAAopKvb Код:
Вы конечно можете написать что-то вроде: Код:
Делать же защиту от откровенных вредителей и последних дибилов не имеет смысла: все равно сломают. Зря только время будет потрачено. Вот и получается, что сеттер в этой ситуации просто избыточен. Теперь рассмотрим другой вариант: Предположим, у нас есть виджет, который может содержать в себе другие виджеты. И при изменении свойства "безопасность", родитель должен пробежать по всем своим деткам, и всех их уведомить: "новый режим работы!" Что бы детки были в курсе, и смогли поменять свои собственные режимы, и оповестить уже своих собственных деток о этом изменении. В этой ситуации нужен сеттер. Просто потому, что это единственный простой способ организовать такую логику. |
|
05.09.2013, 22:44 | #36 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Да, о таких способах использования я не подумал. Прошу прощения, был не прав. Спасибо за внятное разъяснение
|
07.09.2013, 21:40 | #37 |
Форумчанин
Регистрация: 22.04.2013
Сообщений: 588
|
Очень приятно читать такое развитие темы!
|
09.09.2013, 02:10 | #38 | |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Ну метод - это вполне себе официальный термин ООП. Просто когда речь идет конкретно о С++, как по мне, так правильнее говорить функция-член.
Цитата:
Если не нужна - само собой. Однако в данном конкретном случае я считаю, что нужна. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обновление поля формы после создания новой записи создания | romanln2012 | Microsoft Office Access | 2 | 09.08.2012 14:12 |
Подскажыте програму для создания gif-анимаций, которые после создания не теряют четкости | pufystyj | Софт | 1 | 24.02.2011 01:50 |
Автоматическое преобразование на основе первого аргумента конструктора в вызов самого конструктора | jennya | Visual C++ | 8 | 03.10.2010 19:03 |
Создание конструктора | Superlotles | Общие вопросы C/C++ | 5 | 23.05.2010 01:38 |
Правила разделов/главные правила | Alex Cones | О форуме и сайтах клуба | 1 | 30.09.2009 17:49 |