Я хотел бы знать, какой из них более оптимален для доступа к переменной-члену класса с помощью указателя объекта (поскольку я обращаюсь к нему через концепцию функции друга) или используя getter и метод setter для класса.Доступ к переменной-члену является оптимальным или доступ к функции-члену
ответ
Для меня лучшим является встроенный приемник.
inline int GetValue() const {return Value;}
Кстати, вы можете посмотреть на this answer
Как правило, вы бы написать добытчиками и сеттеров рядный, поэтому не должно быть никаких накладных расходов. Даже с отдельным определением хороший компилятор должен объединить эти вызовы с помощью оптимизации всей программы.
Если это не так, профиль и проверьте, действительно ли на самом деле влияет производительность, прежде чем принимать какое-либо решение.
Обратите внимание, что доступ к элементам снаружи (непосредственно, от friend
или даже геттеров и сеттеров) прерывает инкапсуляцию. Опция friend
ограничивает это для определенного класса, поэтому WRT это немного лучше. Если вы хотите получить доступ к этим членам, зайдите с friend
. Если у вас много друзей, лучше пойдите с геттерами/сеттерами (по крайней мере, у вас есть единственная точка доступа, справа). Если производительность является проблемой (измеримой), обратитесь к публичным участникам.
Привет Может дать мне ссылку для профилирования, я новичок в части оптимизации, я был бы умен, если бы вы могли поделиться :) – add2c
@ add2c зависит от платформы, которую вы используете. Просто google для «профилирования приложений на C++ на
У меня есть только один друг этого класса, на самом деле этот класс имеет другой член, принадлежащий к разному классу, поэтому я решил использовать друга и косвенно получить доступ к этому следующему уровню члена класса (принадлежат к третьему классу) – add2c
- 1. Является ли доступ к СУБД или РСУБД?
- 2. Какая скорость, доступ к указателю или доступ к ссылке?
- 3. Доступ к массивам или объектам
- 4. Доступ к UIPageViewController или озвучивание
- 5. Доступ к MySQL или Postgres?
- 6. SSAS: Доступ к олицетворению (доступ к услугам)
- 7. доступ запрещен доступ к LOCALHOST
- 8. Доступ к
- 9. Доступ к `weak_ptr` и` shared_ptr` является атомарным
- 10. Является ли доступ к статически или динамически распределенной памяти быстрее?
- 11. Является ли доступ к элементам char * или std :: string быстрее?
- 12. Является ли блокирующий доступ к требуемому bool или это Overkill
- 13. Доступ к массиву является переменной-членом
- 14. Доступ к вашей учетной записи является анонимным
- 15. Доступ к классам C#
- 16. Доступ к условной гиперссылке
- 17. Доступ к модифицированному закрытию
- 18. Предоставить доступ к INFORMATION_SCHEMA
- 19. Доступ к данным приложения
- 20. Доступ к выбывшему закрытию
- 21. Доступ к полю строительства
- 22. Доступ к конструктору частного или защищенного класса?
- 23. Доступ к Parse MBaaS
- 24. Доступ к кодово-контролеру доступ к url / папке
- 25. Доступ к данным Блокнот
- 26. Дизайн услуги или доступ к другому процессу
- 27. Доступ к подматрице OpenCV: копия или ссылка?
- 28. Является ли медленнее доступ к полю из нескольких структур или к доступу к элементам массива/вектора?
- 29. Доступ к AspNetRequest
- 30. Доступ к объектам VBA
Не могли бы вы разместить код, показывающий, что вы пытаетесь сравнить? «Доступ к переменной-члену класса через указатель объекта» не очень ясен. – juanchopanza