繁体   English   中英

我应该使用参考吗?

[英]Should I use a reference?

我有一个包含实现指针的类。 因此,在某些功能中,我多次提到实现的成员。 写作是个好主意

// 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();

在我的用例中,变量m_pImpl-> m_str使用了大约10到20次。 恐怕我几乎无法描述这两种方法之间的性能差异。 有人知道或者任何人测试它会有所作为吗? 这取决于我使用变量的频率(一次相对于20次而不是10000次)? 或者一个体面的编译器是否与方法1做同样的事情?

不要试图完成现代编译器的工作,因为他们非常重视代码优化:回避那些声称的改进技巧。

它不仅是混淆,而且方法1也容易受到错误的重构器在str的定义中删除&的影响:如果这样做,则返回的指针将悬空并且程序行为未定义 出于这些原因,我不允许在我的代码库中使用方法1。

从8.3.2参考文献§4

未指定引用是否需要存储

因此,我建议使用看起来更易读的代码,并将其余部分留给编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM