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

标签 c# c++ stl stack

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

相关文章:

c# - 在 C# 中处理字符串化的 JS 对象

c++ - C++ 中的#import 和#include 有什么区别?

c++ - 将 GUI C++ 应用程序转换为控制台应用程序

C++:STL 链表 - += 复制节点

c++ - 字符串没有针对字符串文字进行足够优化

c++ - 以有效的方式逐字节比较数据(使用 C++)

c# - 在 C# 中创建日期时间

c# - 从 Windows 应用程序的文本框中抓取文本

c# - ASP.Net OAuth 授权服务器 : Add an array as additional response parameter

c++ - LD_PRELOAD 带有多个源文件