c – 我应该使用参考吗?
发布时间:2020-12-16 10:01:49 所属栏目:百科 来源:网络整理
导读:我有一个包含实现指针的类.因此,在某些功能中,我多次提到实现的成员.写作是个好主意 // approach 1std::string str = m_pImpl-m_str;str.clear();str += "blablabla";// ...return str.c_str(); 一次并使用引用保存指针间接,或者我应该保存引用变量(这总是4
我有一个包含实现指针的类.因此,在某些功能中,我多次提到实现的成员.写作是个好主意
// 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |