微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 我应该使用参考吗?

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

// 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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐