大佬教程收集整理的这篇文章主要介绍了c – 通过引用传递给STL容器的对象的生命周期,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,STL容器并不是要复制它们包含的对象,否则会影响它们的生命周期,但实验上我看到了不同的结果.
特别是,如果它们在超出范围之前存储在容器中,则仍然可以访问字符串类,这些类用于在销毁时将其底层存储的第一个字符清零.例如,请考虑以下示例:
using namespace std;
queue<String> strQueue; const char *genStr(int i) { oStringstream os; os << "the number i is " << i; strQueue.push(os.@L_944_1@); return strQueue.BACk().data(); } void use@L_944_1@ { while(!strQueue.empty()) { cout << strQueue.front() << endl; strQueue.pop(); } } int main(int argc,char **argv) { for(int i = 0; i < 40; i++) { printf("Retval is: %s\n",genStr(i)); } use@L_944_1@; return 0; }
当gen@L_944_1@退出时字符串超出范围,我希望printf只@L_696_7@“Retval is:”,或者至少调用use@L_944_1@来给出未定义的结果,因为内存被踩到了通过额外调用的重复分配,但两者都返回适当存储的字符串,而不会失败.
我想知道为什么会这样,但取而代之的是,我很高兴知道我是否可以依赖任何旧物体发生的这种效应.
谢谢
以上是大佬教程为你收集整理的c – 通过引用传递给STL容器的对象的生命周期全部内容,希望文章能够帮你解决c – 通过引用传递给STL容器的对象的生命周期所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。