Можно ли изменить модификаторы доступа, создав новый заголовочный файл?

0

Недавно я просто хотел изменить свойство доступа класса в webkit.framework, чтобы получить доступ к частному члену данных.

Мой метод заключается в использовании нового файла заголовка для изменения свойства контроля доступа элемента. Это нормально?

Я не очень уверен в этом. Поэтому я просто хочу знать, как C++ реализует контроль доступа (открытый, закрытый, защищенный) и в какой фазе (компиляция или время выполнения).

  • 0
    Просто чтобы убедиться, что я правильно понял: вы скопировали существующее объявление класса из исходного файла заголовка этого проекта, изменили некоторую переменную-член с private на public и используете измененный заголовок? Вы связываетесь с библиотеками, которые были скомпилированы с оригинальным заголовком?
  • 0
    Пожалуйста, предоставьте больше контекста. Почему вы хотите изменить модификаторы доступа? Это действительно хорошая идея - или же этот участник был объявлен личным участником такой плохой идеи? Как выглядит ваш код? Вы знаете, как public , private и protected работают в C ++, не так ли?
Показать ещё 2 комментария
Теги:
access-modifiers

1 ответ

1

Технически это нормально, чтобы модифицировать спецификаторы доступа, такие как public, private, protected, которые определены в файле заголовка, возможно, стороннего производителя.

C++ применяет этот тип спецификаторов доступа ТОЛЬКО во время компиляции. В C++ нет механизма для применения спецификаторов доступа во время выполнения.

Но лучше было бы НЕ менять спецификатор доступа от частного к защищенному/общедоступному, потому что не будет никакой гарантии, что он содержит желаемое значение, любой момент времени во время выполнения.

  • 0
    Кстати, где я могу найти конкретное введение в механизм управления доступом C ++?
  • 0
    @ Чогри Бьярн Страуструп, в своей книге «Дизайн и развитие C ++» говорит: «Механизмы контроля доступа C ++ обеспечивают защиту от несчастных случаев, а не от мошенничества». Он продолжает говорить, что «любой язык программирования, который поддерживает доступ к необработанной памяти, оставит данные открытыми для преднамеренного подмены способами, которые нарушают правила явного типа, заданные для данного элемента данных». Вы можете обратиться к этой книге за более подробной информацией.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню