ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1161922 Топик полностью
Costic (07.01.2022 14:46, просмотров: 129) ответил AlexBi на Чем предлагаете заменить extern? Вероятно чем-то типа
С точки зрения компилятора и компьютера - нет разницы. Объявления внутри класса/структуры чуть медленнее, т.к. при доступе будет вычисляться адрес/смешение переменной внутри структуры (компилятор это легко оптимизирует, а процессор закеширует). Тут вопрос в другом - в проектировании и стиле написания программы. Текст программы не только для компилятора, но и для программистов в большей степени. Ваш код допустим, но не рекомендуется к применению, т.к. лучше public для данных 

не делать. Если общедоступных переменных/параметров много, то можно их загнать в namespace или в структуры, согласно предметной области. Класс по своей сути скрывает реализацию и детали. Если вам надо менять внутренности класса, то используйте set/get как уже посоветовали. Для классов с атомарными данными-членами следует использовать struct, например, struct Point { float x, y; void Draw(Canvas &); } Изменение извне x или y не нарушает состояние Point как "точки". Контр-пример, это любой iostream или контейнер - там "кишки" скрыты в private/protected, а флаги открыты ios::binary и т.д.

Ничего страшного в extern нет. Без него не обойтись, если в проекте более 2 файлов. Другое дело, что каждый extern должен быть обоснован, "выстрадан" и тем более документирован!