当前位置: 首页 > news >正文

介绍小说的网站模板请问注册公司怎么注册

介绍小说的网站模板,请问注册公司怎么注册,公司介绍ppt范例,网站域名申请步骤C11 noexcept关键字用于指定函数不会抛出异常#xff0c;有助于提高程序的异常安全性#xff0c;还能够使编译器生成更加高效的代码。 noexcept 是函数接口的一部分 函数是否声明为 noexcept 是接口设计的一部分#xff0c;客户端代码可能会依赖这一点。如果一个函数被声明…C11 noexcept关键字用于指定函数不会抛出异常有助于提高程序的异常安全性还能够使编译器生成更加高效的代码。 noexcept 是函数接口的一部分 函数是否声明为 noexcept 是接口设计的一部分客户端代码可能会依赖这一点。如果一个函数被声明为 noexcept客户端代码可能会假设这个函数在任何情况下都不会抛出异常从而在调用这个函数时不会进行异常处理。更改函数的 noexcept 状态会影响到依赖这个函数的客户端代码。客户端代码可能需要进行相应的调整例如增加异常处理逻辑以应对新的异常抛出情况。 void safeFunction() noexcept; // 客户端代码可能依赖此函数不抛出异常 2. noexcept 函数更容易优化 编译器可以利用 noexcept 信息进行更多的优化例如不需要为异常处理保留栈信息从而减少运行时开销。当一个异常被抛出时程序需要找到一个合适的异常处理程序来处理这个异常。为了做到这一点程序需要“展开”调用栈即逐层回溯调用栈直到找到一个匹配的异常处理程序。 栈展开的开销保存当前函数的上下文(寄存器状态、局部变量等)。回溯调用栈检查每个函数的异常处理信息析构已构造的对象释放资源找到并跳转到合适的异常处理程序。这些步骤需要额外的运行时支持包括额外的内存和计算资源从而增加了程序的运行时开销。 1省略栈展开信息 如果一个函数被声明为 noexcept编译器知道这个函数不会抛出异常因此可以省略与栈展开相关的元数据和代码。编译器不需要为 noexcept 函数生成异常表(exception table)这些表通常用于记录每个函数的异常处理信息。编译器可以在 noexcept 函数中省略与栈展开相关的代码。 2减少运行时检查 编译器可以减少或消除对 noexcept 函数的动态异常检查。 3内联优化 编译器倾向于将 noexcept 函数内联到调用点内联可以减少函数调用的开销提高性能。 int nonOptimizedFunction() {try {// 可能抛出异常的代码} catch (...) {// 异常处理}return 0; } int optimizedFunction() noexcept {// 不会抛出异常的代码return 0; } 3. noexcept 对于移动语义、swap、内存释放函数和析构函数非常有用 对于移动操作和 swap声明为 noexcept 可以提高性能因为编译器可以更安全地优化这些操作。内存释放函数和析构函数默认是 noexcept 的因为它们不应该抛出异常。 class Widget { public:Widget(Widget other) noexcept;// 移动构造函数void swap(Widget other) noexcept;// 交换函数 }; template class T, size_t N void swap(T (a)[N], T (b)[N]) noexcept(noexcept(swap(*a, *b))); template class T1, class T2 struct pair {void swap(pair p) noexcept(noexcept(swap(first, p.first)) noexcept(swap(second, p.second))); }; 1移动语义 声明为 noexcept 可以告诉编译器移动构造函数不会抛出异常从而允许编译器进行优化。移动操作通常比复制操作更快因为它们只需转移资源的所有权而不是复制资源。如果移动操作是 noexcept 的编译器可以更安全地使用移动操作来优化代码。 class Widget { public:Widget(Widget other) noexcept; // 移动构造函数 }; Widget 类的移动构造函数被声明为 noexcept表示这个操作不会抛出异常。编译器可以利用这一点进行优化例如在 std::vector 的 push_back 操作中优先使用移动操作。 2swap 函数 swap 函数用于交换两个对象的内容。声明为 noexcept 可以提高性能因为编译器可以更安全地优化 swap 操作。swap 操作通常涉及多个赋值和移动操作。如果这些操作是 noexcept 的编译器可以更自由地进行优化例如内联和减少异常处理的开销。 class Widget { public:void swap(Widget other) noexcept; // 交换函数 }; Widget 类的 swap 函数被声明为 noexcept表示这个操作不会抛出异常。编译器可以利用这一点进行优化例如在 std::sort 等算法中优先使用 swap 操作。 3noexcept 对于内存释放函数和析构函数 内存释放函数如 operator delete 和 operator delete[]用于释放动态分配的内存。这些函数默认是 noexcept 的因为它们不应该抛出异常。如果内存释放函数抛出异常程序将处于不确定的状态可能导致资源泄露或其他严重问题。因此默认情况下这些函数是 noexcept 的以确保程序的稳定性。析构函数用于释放对象占用的资源。这些函数默认是 noexcept 的因为它们不应该抛出异常。如果析构函数抛出异常可能会导致未定义行为特别是在标准库容器和算法中。例如如果 std::vector 中的元素的析构函数抛出异常可能会导致 std::vector 的析构函数无法正常完成从而导致资源泄露。 class Widget { public:~Widget() noexcept; // 析构函数 }; Widget 类的析构函数被声明为 noexcept表示这个操作不会抛出异常。编译器可以利用这一点进行优化如在 std::vector 的析构过程中更安全地释放资源。 4. 异常中立的函数不加no except 大多数函数是异常中立的即它们自己不抛异常但可能调用其他会抛异常的函数。这些函数不应该声明为 noexcept因为它们可能传递异常。 void exceptionNeutralFunction() {someOtherFunction(); // 可能抛出异常 } 虽然 noexcept 可以带来性能提升但不应该为了 noexcept 而扭曲函数的实现。如果一个函数的实现可能会抛出异常强行捕获异常并转换为状态码或特殊返回值会使代码变得复杂且难以维护。 5. 区分宽泛契约和严格契约的函数 宽泛契约的函数没有前置条件可以随时调用不应表现出未定义行为,无论程序状态如何都可以安全地调用这些函数。严格契约的函数有前置条件违反前置条件会导致未定义行为。对于严格契约的函数即使它自然不会抛出异常也应该谨慎声明 noexcept因为前置条件的检查可能需要抛出异常。 void wideContractFunction() noexcept {// 没有前置条件自然不会抛出异常 } 严格契约函数 严格契约的函数有前置条件调用者必须确保这些前置条件满足。如果违反前置条件函数的行为是未定义的。函数有特定的输入要求调用者必须确保这些要求满足。如果前置条件不满足函数的行为是未定义的可能会导致程序崩溃或其他不可预测的行为。谨慎声明 noexcept即使这些函数自然不会抛出异常也应该谨慎声明为 noexcept因为前置条件的检查可能需要抛出异常。 void narrowContractFunction(const std::string s) noexcept{assert(s.length() 32); }
http://www.dnsts.com.cn/news/118774.html

相关文章:

  • 东莞北京网站建设价格网站建设评审会总结发言
  • 宣城有做网站的公司吗济南优化联系电话
  • 网站托管流程什么是网络社交
  • 门户网站建设公司教程济宁网上做科目一的网站
  • 网站翻页动画效果包装设计公司哪家好
  • 企业网站建设熊掌号中国广东网站建设
  • php网站开发结构成都网站建设_创新互联
  • 用dw做教学网站清除wordpress开发痕迹
  • 网站美化的目标广州影视制作公司
  • 帝国网站模板下载沂源县建设局网站
  • html制作电影网站scratch少儿编程软件下载
  • 网站百度流量怎么做wordpress 小论坛小程序
  • 网站建设及推广文案讯美智能网站建设
  • 网站开发项目计划wordpress5.0.2编辑器
  • dw网站二级页面怎么做对网站建设的维护
  • 网站关键词优化排名公司购买设备有什么网站做参考
  • 进入网站后台ftp空间后怎样上传长沙有什么好玩的
  • 免费项目发布平台佛山网站页面优化
  • 邮箱注册网站wordpress二级目录
  • 小说在线阅读网站怎么做浙江省建设项目招投标网站
  • 大连网站建设哪个好开发公司排名
  • wordpress模板分享seo店铺描述例子
  • 长沙h5手机网站制作潍坊网站建设推广报价
  • 营销型网站建设实战一级造价工程师专业
  • 公司网站案例神魔网站建设
  • 城乡建设部门户网站钢铁网站模板
  • 博纳网站建设网站建设实训内容
  • 网站底部给网站地图做链接做公众号网站
  • 个人网站风格洛阳航迪科技网站建设公司怎么样
  • 简单的网站怎样做游戏怎么做充值网站