Официальный сайт студ.городка НГТУ
Программирование и БД » Private в языке Си 

#1  14.12.06 11:27

Private в языке Си

Какое ощутимое преимущество дает рекомендация делать поля классов закрытыми?
Кроме выработки хорошего стиля программирования и защиты от ошибок?

Offline

#2  14.12.06 12:21

Re: Private в языке Си

Если закрыл - никто не украдет :)

Offline

#3  14.12.06 12:39

Re: Private в языке Си

private данные нельзя унаследовать

Offline

#4  14.12.06 12:40

Re: Private в языке Си

если рассматривать случай с одним классом, без наследования

Offline

#5  14.12.06 12:43

Re: Private в языке Си

хммм, странный вопрос, хотя бы то, что таким образом механизм инкапсуляции становится более гибким, то есть  если при сохранении интерфейса меняется внутренняя структура класса (например переименовываются те же поля), то изменения будут только внутри класса, а не во всех классах-клиентах.

Offline

#6  14.12.06 14:38

Re: Private в языке Си

все, программеры иссякли что ли?  :)))

Offline

#7  14.12.06 14:49

Re: Private в языке Си

lolo написал(а):

все, программеры иссякли что ли?  :)))

а что тебя не устраивает в данных ответах?

Offline

#8  14.12.06 15:40

Re: Private в языке Си

VaGon,
ну твой ответ слишком навороченный, ответ должен быть простой и лаконичный)))

Offline

#9  14.12.06 16:55

Re: Private в языке Си

Просто и лаконичный ответ в данном контексте может показаться несколько..гм..обидным что ли

Offline

#10  14.12.06 17:13

Re: Private в языке Си

ладно..
а почему private в с++ используется по умолчанию?

Offline

#11  14.12.06 17:31

Re: Private в языке Си

это у Страуструпа спроси :)

Offline

#12  14.12.06 17:35

Re: Private в языке Си

lolo написал(а):

а почему private в с++ используется по умолчанию?

возможно, для того чтобы более явно "выделить" инкапсуляцию

Offline

#13  14.12.06 17:43

Re: Private в языке Си

аналогично можно было бы спросить а почему паблик
если бы там был бы паблик

Offline

#14  15.12.06 00:09

Re: Private в языке Си

Если ты имеешь в виду быстродействие или размер исполняемого кода, то модификатор доступа на это никак не влияет.
Изменение состояния объекта обычно сопровождается некоторыми действиями. Так что вопрос можно поставить по-другому: зачем в C++ допускается public для полей класса.

Offline

#15  15.12.06 00:37

Re: Private в языке Си

Fatboy написал(а):

private данные нельзя унаследовать

жесть...
с каких это пор интересно?

Offline

#16  15.12.06 01:07

Re: Private в языке Си

simplex, а что тебя удивляет?
при любом типе наследования private-члены класса недоступны для потомков
попробуй скомпилить следующий пример и посмотри какие сообщения выплёвывает компилятор

Код: cpp:

class A { private: int a; };
 
class B : public A { public: void f() { a = 7; } };
class C : private A { public: void f() { a = 7; } };
class D : protected A { public: void f() { a = 7; } };
 
void main()
{
	B b;  
	C c; 	
	D d;
	b.f();
	c.f();
	d.f();
}

Offline

#17  15.12.06 01:43

Re: Private в языке Си

да не... меня уже ниче не удивляет :)
разницу то сам чуешь между "нельзя унаследовать" и "нельзя обратиться к этим данным кроме как через public-методы базового"

Offline

#18  15.12.06 01:59

Re: Private в языке Си

ок, согласен.

Offline

#19  15.12.06 10:01

Re: Private в языке Си

simplex, респект )))

Offline

#20  15.12.06 10:42

Re: Private в языке Си

Fatboy написал(а):

simplex, а что тебя удивляет?
при любом типе наследования private-члены класса недоступны для потомков
попробуй скомпилить следующий пример и посмотри какие сообщения выплёвывает компилятор

Код: cpp:

class A { private: int a; };
 
class B : public A { public: void f() { a = 7; } };
class C : private A { public: void f() { a = 7; } };
class D : protected A { public: void f() { a = 7; } };
 
void main()
{
	B b;  
	C c; 	
	D d;
	b.f();
	c.f();
	d.f();
}

Фэтбой промахнулся
тебе больше не быть важаком стаи

Offline

#21  15.12.06 12:09

juf
Профиль

Re: Private в языке Си

VaGon написал(а):

это у Страуструпа спроси :)

+1 :)

Offline

#22  16.12.06 08:56

Re: Private в языке Си

про. написал(а):

ужасы какие. прописывает отаку 30 капель полония.

все фигня, вот когда класс заворачивается внутрь себя, выставляет наружу жопу и говорит: "вот вам интерфейс, юзайте". вот это ужасы.

Offline

#23  16.12.06 10:21

Re: Private в языке Си

один канал, куда уж проще...

Offline

#24  16.12.06 13:30

Re: Private в языке Си

для управления сложностью, т.е. для ее уменьшения. также чтобы нельзя было испорить данные извне класса

Offline

Программирование и БД » Private в языке Си 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.042 сек.
Выполнено 11 запросов.