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

佛山网站制作哪家北京中小企业建站价格

佛山网站制作哪家,北京中小企业建站价格,阳谷做网站,简洁大气企业网站文章目录 一、背景与动机二、语法与基本使用三、优势与应用场景(一)简化代码(二)提升模板编程灵活性(三)与Lambda表达式结合 四、限制与注意事项五、总结 C23标准引入了一项重要的语言特性——显式对象形参…

文章目录

    • 一、背景与动机
    • 二、语法与基本使用
    • 三、优势与应用场景
      • (一)简化代码
      • (二)提升模板编程灵活性
      • (三)与Lambda表达式结合
    • 四、限制与注意事项
    • 五、总结

C++23标准引入了一项重要的语言特性——显式对象形参与显式对象成员函数,又名“推导 this”(Deducing this,P0847R7)。这一特性改变了我们编写成员函数的方式,为模板元编程和设计模式的实现带来了新的可能性。

一、背景与动机

在C++23之前,成员函数的this指针类型是隐式的,这在某些情况下会带来不便。例如,当需要为一个类提供多个重载的成员函数以应对不同类型的对象(如const和非const对象、左值和右值对象)时,代码会变得冗余。而显式对象形参允许我们明确指定this的类型,让编译器能够根据对象的实际类型和值类别来推导出this的类型。

二、语法与基本使用

显式对象形参的语法为:

ret-type member-function-name(this type-name param-name)

例如,以下代码展示了如何使用显式对象形参来定义一个成员函数:

struct A {template<typename Self>void foo(this Self&& self) {// do something}
};

在这个例子中,Self是一个模板参数,它代表了对象的实际类型和值类别。当调用foo函数时,编译器会根据对象的类型和值类别来推导出Self的具体类型。

三、优势与应用场景

(一)简化代码

显式对象形参可以减少代码冗余。在C++23之前,为了处理不同类型的对象,可能需要编写多个重载的成员函数。而使用显式对象形参后,可以通过一个模板函数来处理所有情况。例如:

// Before
struct S_implicit {int data_;int& foo() & { return data_; }const int& foo() const& { return data_; }
};// After
struct S_explicit {int data_;template <class Self>auto&& foo(this Self& self) {return std::forward<Self>(self).data_;}
};

(二)提升模板编程灵活性

在模板元编程中,显式对象形参使得成员函数能够更灵活地处理不同类型的对象。这为实现一些复杂的模板模式,如Curiously Recurring Template Pattern(CRTP),提供了更简洁的语法。例如:

struct Base { void name(this auto&& self) { self.impl(); } };
struct D1 : Base { void impl() { std::puts("D1::impl()"); } };
struct D2 : Base { void impl() { std::puts("D2::impl()"); } };

不再需要使用static_cast进行转换,直接调用即可。

(三)与Lambda表达式结合

显式对象形参还可以与Lambda表达式结合使用,为Lambda表达式提供递归调用的能力。例如,以下代码展示了一个递归的Lambda表达式:

auto fib = [](this auto&& self, int n) {if (n <= 1)return n;elsereturn self(n - 1) + self(n - 2);
};

四、限制与注意事项

显式对象形参只能用于非虚的非静态成员函数,并且必须是函数的第一个形参。此外,在使用显式对象形参时,需要注意重载决议的规则。例如,当存在多个重载的成员函数时,编译器会根据显式对象形参的类型和值类别来选择最合适的函数。

五、总结

C++23的显式对象形参与显式对象成员函数为C++编程带来了新的灵活性和简洁性。它不仅简化了代码,还提升了模板编程的能力。然而,这一特性也引入了一定的理解成本。开发者在使用时需要仔细考虑重载决议的规则,以确保代码的正确性和可读性。随着C++23标准的逐步普及,相信这一特性将在更多场景中得到应用,为C++开发带来更多的便利和创新。


文章转载自:

http://Mc7R75wI.hhrpy.cn
http://58JairMp.hhrpy.cn
http://fbJXKZ8Q.hhrpy.cn
http://xsyw2Idf.hhrpy.cn
http://2Ssp8Qpf.hhrpy.cn
http://drw2FBuW.hhrpy.cn
http://cxSNpXSg.hhrpy.cn
http://Id7Paqg0.hhrpy.cn
http://kdFdt6CF.hhrpy.cn
http://a3stjD6w.hhrpy.cn
http://ASYy0ueM.hhrpy.cn
http://Qp3PFi3g.hhrpy.cn
http://1lw6WPMp.hhrpy.cn
http://03DBEJIb.hhrpy.cn
http://dZUP6nZA.hhrpy.cn
http://XoaWoXWs.hhrpy.cn
http://kiOxaqkN.hhrpy.cn
http://ifJ3wiEF.hhrpy.cn
http://Go8s7gVr.hhrpy.cn
http://JU6cfOYB.hhrpy.cn
http://9utokdPB.hhrpy.cn
http://M3cw7kR2.hhrpy.cn
http://GRnFwuSq.hhrpy.cn
http://3Mm9gUnY.hhrpy.cn
http://ntcZyKvc.hhrpy.cn
http://mN4j4yjw.hhrpy.cn
http://qnaoW4Mt.hhrpy.cn
http://X9BBgpty.hhrpy.cn
http://VEVowyDr.hhrpy.cn
http://JYgVmZFB.hhrpy.cn
http://www.dtcms.com/wzjs/665211.html

相关文章:

  • 哪里可以免费注册网站网站活动专题页面
  • 什么网站可以做会计题目百度竞价排名收费
  • 做网站有名的公司湖南it网站建设mxtia
  • 会展网站建设大余网站建设
  • 做普通网站价格wordpress 配置邮件
  • 网站开发专业主修课程最新网络营销方式
  • 网站规划说明书net网站建设
  • 深圳论坛网站设计哪家公司好网站专项审批查询
  • 网站制作苏州企业通过网络营销学到了什么
  • 手机网站制作哪家好国外创意设计网站
  • 济南专业的设计网站温州网站关键词
  • 手机网站转app开发教程网站制作电话多少
  • 大兴网站设计揭阳高端品牌网站建设
  • 网站怎么seo关键词排名优化推广有名的网页游戏
  • 怎么做frontpage网站网页制作素材图片是什么格式
  • 网站建设销售工作内容女主网站和男主做
  • 网站不能风格哪个微信公众号有a
  • 高要网站制作保安服定制公司
  • 保定酒店网站制作wordpress 展示微博
  • 泉州网站设计找哪家vue如何网站开发
  • 网站免费建站众享星球人物网页设计模板
  • 个人网站广告投放玩具外贸网站模板
  • 济宁华园建设有限公司网站akm建站系统
  • 创建平台网站下载软件做qq的网站
  • 商城网站开发费用住建局
  • 上海网站建设工作室wordpress 多站点方法
  • 内黄县建设局网站网站建设捌金手指花总六
  • 整合营销网站建设阿里云oss可以做网站
  • 福田做棋牌网站建设多少钱alexa排名分析
  • 充值网站建设成都网站的