private в C++

Discussion in 'WASM.HEAP' started by NeuronViking, Mar 18, 2010.

  1. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    паблик отличается от привата только тем что для привата не создаются функции get/set так как методы класса могут обраться до данных самостоятельно

    наследование просто помогает вам "скопировать" кучу кода, при этом естественно расположение данных может измениться (на уровне структур между старыми могут вклиниться новые)
     
  2. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    *добраться
     
  3. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    встречный вопрос -зачем ??? обойти проверку правильности кода компилятором ???
     
  4. NeuronViking

    NeuronViking New Member

    Blog Posts:
    0
    Joined:
    Oct 29, 2004
    Messages:
    476
    Location:
    где-то в Сиднее
    Rockphorr
    я это выясняю не с целью обойти проверку, а с целью защититься от подобных ошибок. хотя пока на грабли не наступишь не вылечишься как правило...
     
  5. Ustus

    Ustus New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2005
    Messages:
    834
    Location:
    Харьков
    NeuronViking
    А protected еще страшнее :)
    Вообще-то ответы на все такие вопросы дает ISO/IEC 14882 2003, только в нем надо приловчиться ковыряться.

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

    Booster New Member

    Blog Posts:
    0
    Joined:
    Nov 26, 2004
    Messages:
    4,860
    Как и любую другую.
     
  7. Ustus

    Ustus New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2005
    Messages:
    834
    Location:
    Харьков
    Booster
    Просто некоторых это смущает почему-то :) Вызвать-то нельзя, а перекрыть - можно...
     
  8. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    почитайте страуструпа - дизайн и эволюция цэплусплус - там же чуть ли не прямым текстом написано все эти рюшечки (приват паблик и прочее) всего лишь средства языка для разрешения конфликтов имен и разделения их (имен) области действия - это все всего лишь навсего детали реализации патерна проектирования под названием инкапсуляция

    вы объявили что-то как приват, но вдруг вам это понадобилось в другой части программы - переносите в паблик и все
     
  9. Ustus

    Ustus New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2005
    Messages:
    834
    Location:
    Харьков
    Rockphorr
    ну я бы не рекомендовал читать Страуструпа с целью изучения теории, особенно новичкам. Он, конечно, дядька умный, но излагает уж очень тяжеловесно и, кстати, не всегда корректно. Поэтому по теории лучше читать признанных теоретиков, таких как Саттер, Мейерс, и все равно относиться критически.

    Вот здесь ты очень ошибаешься, или с жабой перепутал, правила доступа не влияют на разрешение имен. Сначала разрешаются имена, потом проверяется доступ. Некоторые считают, что это полный бред, но в любом случае это стандарт, никто его уже ломать не будет.
     
  10. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    Ustus
    я ничего не не говорил про правила доступа и порядок, т.к. если имя определено локально то его можно повторно использовать в другой непересекающеся локальной части, а что сначала что потом вопрос второй.
     
  11. J0E

    J0E New Member

    Blog Posts:
    0
    Joined:
    Jul 28, 2008
    Messages:
    621
    Location:
    Panama
    NeuronViking гугли "Паблик Морозов"

    Rockphorr не гони на Страуструпа, если что-то из привата понадобилось в паблике, надо не переносить а поносить консерваторию ;)
     
  12. Ustus

    Ustus New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2005
    Messages:
    834
    Location:
    Харьков
    Rockphorr
    И что? Имя в любом случае можно использовать, а я про то, что private/protected/public на разрешение имен вообще не влияют. Они так, чисто для контроля.