2014-01-07 3 views
1

Я хотел бы знать, какой из них более оптимален для доступа к переменной-члену класса с помощью указателя объекта (поскольку я обращаюсь к нему через концепцию функции друга) или используя getter и метод setter для класса.Доступ к переменной-члену является оптимальным или доступ к функции-члену

+0

Не могли бы вы разместить код, показывающий, что вы пытаетесь сравнить? «Доступ к переменной-члену класса через указатель объекта» не очень ясен. – juanchopanza

ответ

0

Для меня лучшим является встроенный приемник.

inline int GetValue() const {return Value;} 

Кстати, вы можете посмотреть на this answer

0

Как правило, вы бы написать добытчиками и сеттеров рядный, поэтому не должно быть никаких накладных расходов. Даже с отдельным определением хороший компилятор должен объединить эти вызовы с помощью оптимизации всей программы.

Если это не так, профиль и проверьте, действительно ли на самом деле влияет производительность, прежде чем принимать какое-либо решение.

Обратите внимание, что доступ к элементам снаружи (непосредственно, от friend или даже геттеров и сеттеров) прерывает инкапсуляцию. Опция friend ограничивает это для определенного класса, поэтому WRT это немного лучше. Если вы хотите получить доступ к этим членам, зайдите с friend. Если у вас много друзей, лучше пойдите с геттерами/сеттерами (по крайней мере, у вас есть единственная точка доступа, справа). Если производительность является проблемой (измеримой), обратитесь к публичным участникам.

+0

Привет Может дать мне ссылку для профилирования, я новичок в части оптимизации, я был бы умен, если бы вы могли поделиться :) – add2c

+0

@ add2c зависит от платформы, которую вы используете. Просто google для «профилирования приложений на C++ на » –

+0

У меня есть только один друг этого класса, на самом деле этот класс имеет другой член, принадлежащий к разному классу, поэтому я решил использовать друга и косвенно получить доступ к этому следующему уровню члена класса (принадлежат к третьему классу) – add2c

Смежные вопросы