У меня есть класс, содержащий указатель реализации. Поэтому в некоторых функциях я несколько раз ссылаюсь на члена реализации. Это хорошая идея, чтобы написатьДолжен ли я использовать ссылку?
// approach 1
std::string & str = m_pImpl->m_str;
str.clear();
str += "blablabla";
// ...
return str.c_str();
один раз и использовать ссылку, чтобы сохранить указатель окольные, или я должен сохранить ссылочную переменную (Это всегда 4 или 8 байт, как указатель, не так ли?)?
// approach 2
m_pImpl->m_str.clear();
m_pImpl->m_str += "blablabla";
// ...
return m_pImpl->m_str.c_str();
В моей USECASE переменная m_pImpl-> m_str используется примерно от 10 до 20 раз. Боюсь, я с трудом могу объяснить разницу в производительности между этими двумя подходами. Кто-нибудь знает, или кто-нибудь может его проверить, это имеет значение? Это зависит от того, как часто я использую переменную (один раз против 20 раз по сравнению с 10000 раз)? Или достойный компилятор делает то же самое, что и подход 1?
... Или воспользуйтесь последним и оставьте остальные в компиляторе. Я был бы удивлен, если бы эти подходы скомпилировались в другой код. Используйте все, что вы найдете более читаемым. –
подход 3: 'return m_pImpl-> GetBlablabla();' – Henrik