#5 14.12.06 12:43
Re: Private в языке Си
хммм, странный вопрос, хотя бы то, что таким образом механизм инкапсуляции становится более гибким, то есть если при сохранении интерфейса меняется внутренняя структура класса (например переименовываются те же поля), то изменения будут только внутри класса, а не во всех классах-клиентах.
Offline
#10 14.12.06 17:13
#11 14.12.06 17:31
#12 14.12.06 17:35
#13 14.12.06 17:43
#14 15.12.06 00:09
Re: Private в языке Си
Если ты имеешь в виду быстродействие или размер исполняемого кода, то модификатор доступа на это никак не влияет.
Изменение состояния объекта обычно сопровождается некоторыми действиями. Так что вопрос можно поставить по-другому: зачем в C++ допускается public для полей класса.
Offline
#15 15.12.06 00:37
#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
#18 15.12.06 01:59
#19 15.12.06 10:01
#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

