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

做现金贷的网站有哪些商务软文写作300

做现金贷的网站有哪些,商务软文写作300,响应式网站文案,浙江 外贸网站建设一、复习前面介绍过的C11新功能 1、新类型 C11新增了类型long long 和unsigned long long 新增了类型char16_t 和char32_t 2、统一的初始化 C11扩大了用大括号括起的列表#xff08;初始化列表#xff09;的使用范围#xff0c;使其可以用于所有内置类型和用户定义的类…一、复习前面介绍过的C11新功能 1、新类型 C11新增了类型long long 和unsigned long long 新增了类型char16_t 和char32_t 2、统一的初始化 C11扩大了用大括号括起的列表初始化列表的使用范围使其可以用于所有内置类型和用户定义的类型即类对象。使用初始化列表时可添加等号也可不添加。 3、声明 auto 以前时一个储存类型的说明符C11将其用于实现自动类型推断。 decltype 将变量的类型声明为表达式指定的类型。 指定返回类型 C11新增了一种函数声明语法在函数名和参数列表后面指定返回类型 using nullptr 4、智能指针 如果在程序中使用new从堆自由存储区分配内存等到不再需要时应使用delete将其释放。C引入了智能指针auto_ptr以帮助自动完成这个过程。C11摒弃了auto_ptr,并新增了unique_ptr,shared_ptr,weak_ptr。 5、异常规范方面的修改 noexcept 6、作用域内枚举 枚举名的作用域为枚举定义所属的作用域这意味着如果在同一个作用域内定义两个枚举它们的枚举成员不能同名。最后枚举可能不是可完全移植的因为不同的实现可能选择不同的底层类型。未解决这些问题C11新增了一种枚举。这种枚举使用class或struct定义。 enum old {yes,no,maybe}; enum class new1 {never, sometime, often, always}; enum struct new2 {never , lever , sever}; 7、对类的修改 通过使用类内初始变化可避免在构造函数中编写重复的代码从而降低了程序员的工作量、厌倦情绪和出错的机会。 如果构造函数再成员初始化列表中提供了相应的值这些默认值将被覆盖因此第三个构造函数覆盖了类内成员初始化。 8、模板和STL方面的修改 基于范围的for循环 新的STL容器 新的STL方法 valarray升级 摒弃export 尖括号 9、右值引用 C11新增了右值引用这是使用表示的。右值引用可关联到右值即可出现在赋值表达式右边但不能对其应用地址运算符的值。右值包括字面常量注入xy等表达式以及返回值的函数条件是函数赶回的不是引用。 二、移动语义和右值引用 1、为何需要移动语义 在移动语义之前当我们想要传递一个对象特别是含有动态分配资源的对象如std::vector、std::string等时我们通常会使用拷贝构造或拷贝赋值操作这可能会涉及大量的内存分配和数据复制从而导致性能问题。 移动语义通过允许对象“移动”其资源而不是复制它们来避免这些性能问题。具体来说当一个对象被“移动”时它将其内部资源如动态分配的内存、文件句柄等的所有权转移给另一个对象而不是复制这些资源。原始对象在移动后通常被置于有效的但不确定的状态并且不应再被使用除非重新初始化。 C11通过引入右值引用rvalue reference和移动构造函数move constructor以及移动赋值操作符move assignment operator来支持移动语义。右值引用使用符号表示它们绑定到临时对象如返回值、字面量等的右值。 2、一个移动示例 std::vectorint foo() { std::vectorint v {1, 2, 3, 4, 5}; return v; // 这里返回的是v的右值引用可以触发移动语义 } int main() { std::vectorint v1 foo(); // 这里可能使用移动构造函数来初始化v1 std::vectorint v2; v2 std::move(v1); // 这里使用移动赋值操作符将v1的资源移动给v2 // 现在v1处于有效但不确定的状态不应再使用 return 0; } 3、移动构造函数解析 虽然使用右值引用可以支持移动语义但这并不会神奇的发生。要让移动语义发生需要两个步骤。首先右值引用让不变一起知道何时可使用移动语义。 通过提供一个使用左值引用的构造函数和一个使用右值引用的构造函数将初始化分为了两组。使用左值对象初始化对象时将使用复制构造函数而时候用右值对象初始化对象时将使用移动构造函数程序员可根据需要赋予这些构造函数不同的行为。 4、赋值 适用于构造函数的移动语义考虑也适用于赋值运算符。 5、强制移动 move 三、新的类功能 1、特殊成员函数 在原有4个特殊成员函数默认构造函数、复制构造函数、复制赋值运算符和析构函数的基础上C11新增了两个移动构造函数和移动赋值运算符。 2、默认的方法和禁用的方法 default 3、委托构造函数 C11允许在一个构造函数的定义中使用另一个构造函数。这被称为委托因为构造函数暂时将创建对象的工作委托给另一个构造函数。 4、继承构造函数 派生类继承基类的所有的构造函数默认构造函数、复制构造函数和移动构造函数除外但不会使用于派生类构造函数的特征标匹配的构造函数。 5、管理虚方法override 和final 虚方法对实现多态类层次结构很重要让基类引用或指针能够根据指向的对象类型调用相应的方法但虚方法也带来了一些编程陷阱。例如假设基类声明了一个虚方法而你决定在派生类中提供不同的版本这将覆盖旧版本。如果特征标不匹配将隐藏而不是覆盖旧版本。 四、lambda函数 1、比较函数指针、函数符和lambda函数 函数指针是指向函数的指针它允许你通过指针来调用函数。 简洁明了直接指向函数 可以在不修改代码的情况下改变函数的行为通过改变指针的指向 只能指向全局函数或静态成员函数不能指向类的非静态成员函数因为非静态成员函数需要一个隐式的this指针 不支持状态封装即它们不能存储自己的数据 语法相对繁琐 函数对象是一个重载了operator()的类对象使得它像函数一样可以被调用 可以封装状态即它们可以存储自己的数据 可以作为类的成员从而可以访问类的私有和保护成员 可以拥有构造函数、析构函数和其他成员函数提供更多的灵活性 需要定义类这可能会增加代码的复杂性 相对于lambda函数它们可能更冗长 Lambda函数是C11引入的一种匿名函数对象它可以在需要的地方定义并立即使用 简洁明了可以在需要的地方直接定义 支持捕获列表可以捕获外部作用域中的变量使得lambda可以访问这些变量的值或引用 语法简洁易于阅读和理解 可以作为参数传递给函数或赋值给函数指针和函数对象 由于是匿名的所以不能在定义它的作用域之外被直接引用 捕获列表可能会增加额外的开销特别是如果捕获的是大型对象或复杂类型 2、为何使用lambda 函数指针适用于简单的全局函数或静态成员函数的调用。函数对象提供了更多的灵活性和状态封装但可能需要更多的代码。Lambda函数则提供了一种简洁、灵活的方式来定义和使用可调用实体特别是在需要捕获外部变量的情况下。在可能的情况下lambda函数通常是首选的可调用实体因为它们易于阅读、理解和使用。 五、包装器 包装器Wrapper通常是一个类或者函数它封装了另一个类型或资源的接口并可能提供了额外的功能或管理。 1、包装器function 及模板的低效性 answer ef(q); ef是什么呢它可以是函数名函数指针。函数对象或有名称的lambda表达式。所有这些都是可调用的类型。鉴于可调用的类型如此丰富这可能导致模板的效率极低。 2、修复问题 略 3、其他方式 略 六、可变参数模板 可变参数模板能够创建模板函数和模板类即可接受可变数量的参数。 要创建可变参数模板需要理解几个要点 模板参数包 函数参数包 展开参数包 递归 1、模板和函数参数包 函数参数包是C11引入的一个特性允许我们定义一个函数该函数可以接受任意数量和类型的参数。参数包使用模板参数和三个点...语法。 template typename... Args void print(Args... args) { (std::cout ... args) \n; // 注意上面的折叠表达式是C17中的语法 // 在C11/14中你可能需要使用递归终止函数或初始化列表技巧来实现类似的功能 } int main() { print(1, hello, 3.14); // 输出1hello3.14 return 0; } 2、展开参数包 使用递归模板特化来展开函数参数包 #include iostream // 终止特化 templatetypename T void printHelper(T value) { std::cout value; } // 递归特化 templatetypename T, typename... Args void printHelper(T value, Args... args) { std::cout value ; printHelper(args...); // 递归调用展开剩余参数 } // 辅助函数用于隐藏递归特化 templatetypename... Args void print(Args... args) { printHelper(args...); // 展开参数包 std::cout std::endl; } int main() { print(1, hello, 3.14); // 输出1 hello 3.14 return 0; } 使用折叠表达式来展开函数参数包 #include iostream templatetypename... Args void print(Args... args) { (std::cout ... args) std::endl; // 折叠表达式 } int main() { print(1, hello, 3.14); // 输出1hello3.14 return 0; } 3、在可变参数模板函数中使用递归 #include iostream // 递归终止函数 templatetypename T void print_element(T value) { std::cout value ; } // 递归函数模板 templatetypename T, typename... Args void print_elements(T value, Args... args) { // 处理当前元素 print_element(value); // 递归调用以处理剩余元素 if constexpr (sizeof...(args) 0) { // C17及更高版本中的if constexpr print_elements(args...); } } // 辅助函数模板用于隐藏递归细节 templatetypename... Args void print(Args... args) { print_elements(args...); std::cout std::endl; // 输出换行 } int main() { print(1, hello, 3.14); // 输出1 hello 3.14 后接换行 return 0; } 七、C11新增的其他功能 1、并行编程 C并行编程涉及使用C语言来编写能够同时执行多个任务或线程的程序以加快程序的执行速度或更有效地利用计算资源。C标准库本身并没有直接提供并行编程的API但有一些库和工具可以帮助开发者实现并行性。 2、新增的库 正则表达式 正则表达式指定了一种模式可用于与文本字符串的内容匹配。 3、低级编程 低级编程中的“低级”指的是抽象程度而不是编程质量。低级意味着接近于计算机硬件和机器语言使用的比特和字节。对嵌入式编程和改善操作的效率而言低级编程很重要。 4、杂项 元编程 八、语言变化 1、boost项目 略 2、TR1 是一个库扩展选集 3、使用boost 过 九、接下来的任务 用例分析CRC卡
http://www.zqtcl.cn/news/745418/

相关文章:

  • 建设银行不良资产处置网站wordpress啥时候出现的
  • 出口贸易网站网站建设及解决方案
  • 网站服务器要求做网站需要的服务器
  • 网站后台 编辑器 调用网站优化搜索排名
  • 汽车网站建设规划书网站首页版式
  • 国外网站推广方法wnmp 搭建WordPress
  • 网站建设流程 文档企业网上办事大厅
  • .net怎么做网站域名备案注销流程
  • 检测网站建设网站搭建注意事项
  • 河北建设工程信息网站网站的建设要多少钱
  • 玉林住房和城乡建设局网站官网google广告在wordpress
  • 海淀网站建设公司wordpress 招聘网站模板
  • 手机网站在哪里找到网上能免费做网站发布叼
  • 网站设置英文怎么说广州优质网站建设案例
  • 外贸怎样做网站临汾花果街网站建设
  • 专业集团门户网站建设方案南昌医院网站建设
  • 用php做美食网站有哪些新建网站如何做关键词
  • 企业网站建设招标微信公众平台官网登录入口网页版
  • 网站宣传图网站程序预装
  • 网站设计论文选题seo排名优化推广报价
  • wordpress图床网站百度链接收录
  • 八年级信息网站怎么做电商网站的支付接入该怎么做呢
  • wordpress 的应用大兴安岭地网站seo
  • 网站建站作业做直播网站赚钱
  • 网站建设虍金手指花总简单免费制作手机网站
  • 京东网站是刘强冬自己做的吗献县网站建设价格
  • 余姚什么网站做装修比较好邢台企业做网站哪儿好
  • 网站建设后端国外购物平台排行榜前十名
  • 西安做百度推广网站 怎样备案简述商务网站建设
  • 如何建设本地网站东莞常平限电通知2021