在 C# 中,当您从堆栈中弹出时,它会从堆栈中移除对象并返回该对象。
然而,在 C++ 中,因为 http://blogs.msdn.com/b/zhanli/archive/2010/06/29/c-tips-why-the-pop-method-of-stl-stack-does-not-return-a-value.aspx , pop 函数不会返回对象。
是什么让 C# 能够做一些 C++ 做不到的事情? 或者更像是 C# 不关心这种异常情况是否发生? “如果 operator= 或复制构造函数抛出异常,那么我们就会遇到麻烦:堆栈的内部状态已经改变,但我们还没有得到弹出的元素。” (来自链接)
最佳答案
在 C++ 中,您将返回集合中项目的拷贝,但在 C# 中,您将返回一个引用。返回引用保证不会抛出异常。
关于c# - 从 STL 容器中弹出时,为什么 c# 可以返回对象而 c++ 不能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19581095/