|
24.08.2012, 00:23
|
#1
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
public static и т.д.
Привет всем.
Недавно начала изучать c++ и не понял что такое public, static и т.д.
Вообще для чего они и что выполняют?
|
(Offline)
|
|
24.08.2012, 00:51
|
#2
|
|
Ответ: public static и т.д.
public, protected, private - определяют область доступности полей и методов класса
class A
{
public:
int x;
protected:
int y;
private:
int z;
};
void foo()
{
A bar;
int x = bar.x; // можно получить
int y = bar.y; // нельзя получить
int z = bar.z; // нельзя получить
}
class B : public A
{
// x становится public
// y становится protected
// z становится не доступным из B
};
class C : protected A
{
// x становится protected
// y становится protected
// z становится не доступным из C
};
class D : private A
{
// x становится private
// y становится private
// z становится не доступным из D
};
class E : private A
{
// x не доступен из E
// y не доступен из E
// z не доступен из E
};
static в зависимости от места использования или делает поле общим для всех объектов, или организовывает возможность существования переменной когда она выходит из поле видимости или интересные вещи с функциями
|
|
|
Сообщение было полезно следующим пользователям:
|
|
24.08.2012, 00:59
|
#3
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: public static и т.д.
Спасибо, взял что-то в голову.
Но не пойму чем помешает всегда иметь public?
|
(Offline)
|
|
24.08.2012, 01:17
|
#4
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: public static и т.д.
Сообщение от Okay
Спасибо, взял что-то в голову.
Но не пойму чем помешает всегда иметь public?
|
Доступ быстрее.
|
(Offline)
|
|
24.08.2012, 01:23
|
#5
|
|
Ответ: public static и т.д.
Сообщение от Okay
Спасибо, взял что-то в голову.
Но не пойму чем помешает всегда иметь public?
|
инкапсуляция - идея в том что объект это черный ящик и детали реализации скрыты от пользователя, вот для неё protected и private нужен
ps. в struct по умолчанию public
|
|
|
Сообщение было полезно следующим пользователям:
|
|
24.08.2012, 01:43
|
#6
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: public static и т.д.
Но не пойму чем помешает всегда иметь public?
|
имей.
больше всего бесило когда тебе надо быстро успеть что-то переделать в проге, но для этого внезапно требуется доступ к данным, которые были в давние-давние времена в давних-давних классах, от которых всё зависит, помечены как private/protected, в результате приходилось тупо ждать рекомпила минутами.
нафиг эти игры в чёрные ящики и сокрытие чего-то от самого себя, слава struct.
да и куда детали реализации скрыты, если они все равно указаны в хидере и все равно будут выскакивать через intellisense? в каком-нибудь вижуал ассисте можно вроде настроить чтоб не выскакивали, но за такие игры с самим собой при участии платных тулз можно вообще премию почётного кретина выдать.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.08.2012, 02:05
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: public static и т.д.
лучше пару минут подождать рекомпил, чем выискивать неделями баги из-за недостаточной инкапсуляции.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.08.2012, 02:20
|
#8
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: public static и т.д.
баги из-за недостаточной инкапсуляции
|
пример?
|
(Offline)
|
|
24.08.2012, 02:37
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: public static и т.д.
в личной жизни не сталкивался, ибо у меня как провило все переинкапсулированно.
|
(Offline)
|
|
24.08.2012, 08:02
|
#10
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: public static и т.д.
Сообщение от Mr_F_
имей.
больше всего бесило когда тебе надо быстро успеть что-то переделать в проге, но для этого внезапно требуется доступ к данным, которые были в давние-давние времена в давних-давних классах, от которых всё зависит, помечены как private/protected, в результате приходилось тупо ждать рекомпила минутами.
|
Как же хорошо что в C# есть internal, причем можно дать доступ к интерналам для другой сборки
|
(Offline)
|
|
24.08.2012, 11:18
|
#11
|
Бывалый
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений (для 858 пользователей)
|
Ответ: public static и т.д.
Сообщение от pax
|
Эм.. Похоже на аналог friend в с++
|
(Offline)
|
|
24.08.2012, 11:44
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: public static и т.д.
В С++ friend вроде только для своих классов, а в Net можно определять дружественные сборки. Т.е. доступ к internal типам/членам одной dll из другой.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
26.08.2012, 04:42
|
#13
|
Разработчик
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений (для 470 пользователей)
|
Ответ: public static и т.д.
Mr_F_ у меня на работе весь проект по **зде пошёл, из-за подобных мыслей)
если состояние объекта (данные) необходимо менять\получать в каком-то левом модуле - вероятнее всего ты что-то делаешь не так.
у нас, как следствие использования public везде, невозможно вычислить какого хрена где и почему какой-то баран, в своё время, решил поменять состояние объекта. В итоге выплывает куча багов, которые хрен отследишь. Система ТАК завязана на внутренней реализации каждого отдельного объекта, что уследить происходящее с каждым из них в любой момент времени - невероятный ад. А уж попытаться использовать функционал повторно или пытаться его расширить - мысли граничащие с фантастикой.
Так что не стоит пренебрегать инкапсуляцией.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.08.2012, 13:23
|
#14
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: public static и т.д.
Согласен, что это может быть необходимо, если над проектом работает больше одного человека. Если пишешь чисто сам - тогда не думаю.
Ну и я в принципе не хочу писать тру ООП код, так что не собираюсь плодить и великие множества классов.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:18.
|