为什么c#可以返回对象,而且从STL容器弹出时c ++不能?

whi*_*kar 2 c# c++ stack stl

在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 =或copy构造函数抛出异常,那么我们将遇到麻烦:堆栈的内部状态已经改变,但是我们还没有获得弹出元素." (来自链接)

Jer*_*fin 5

这就是在C++中你要返回集合中项目的副本,但是在C#中你将返回一个引用.保证返回引用不会抛出异常.