做集团网站的冷门却好听的公司名称

张小明 2026/1/9 23:41:10
做集团网站的,冷门却好听的公司名称,中国住建部和城乡建设部官网,做设计的软件一、链式调用 在前面的文章中#xff0c;已经对链式调用有了不少的了解。比如“ this指针”和“设计模式”以及C23中显式this等文章中都多少有些涉及。但实际上#xff0c;C对链式调用的支持并不多给力。如果有Java特别是Kotlin语言开发经验的#xff0c;对链式调用应该是非…一、链式调用在前面的文章中已经对链式调用有了不少的了解。比如“ this指针”和“设计模式”以及C23中显式this等文章中都多少有些涉及。但实际上C对链式调用的支持并不多给力。如果有Java特别是Kotlin语言开发经验的对链式调用应该是非常容易理解的。所谓链式调用就是像链表一样将函数的调用连接起来即可以连续调用多个函数。它让代码看起来更直白、易维护。不过如果调用链太深反而让开发者有点感觉到莫名其妙。这也是事物的两面性吧。链式调用更符合自然语言所以在一些函数编程语言以及高级语言中应用非常广泛。C中的链式调用应用并没有其它语言那么广泛这也是C语言本身的一些特点和应用场景限制的。二、运行机制和原理链式调用的原理本质是对对象引用或指针的控制和处理。链式调用需要在每次完成后继续调用相关的函数就必须得到函数所在的对象进而才能够进行下一步的函数调用。所以链式调用的核心机制就是保证必须能够通过上一个函数调用返回应用对象的引用或指针从而确保连续调用的函数影响作用到对象的同一实例某些扩展实现可能不是这种情况。三、实现方式实现链式调用对于C这类语言来说并不复杂但也并如函数式语言那么简单。其主要的实现方式包括对象引用和指针的操作在函数的返回值中通过返回指针this或 引用*this的方式来传回同一对象实例。这是最常用的方法class Demo{public:Demo*setColor(intv){color_v;returnthis;}Demo*setHigh(intv){high_v;returnthis;}private:intcolor_0;inthigh_160;};intmain(){Demo d;d.setColor(255)-setHigh(180);return0;}流畅接口实现Fluent Interface流畅式接口的设计实现其实更倾向于从逻辑上对链式调用的实现实际实现并未脱离链式调用实现的基本方法。以一个电商的操作为例#includeiostream#includestring#includevectorclass OnShoppingCart{private:std::vectorstd::stringitemName_;std::string userName_;public:OnShoppingCartgetUser(conststd::stringuserName){userName_userName;return*this;}OnShoppingCartaddItem(conststd::stringitemName){itemName_.push_back(itemName);return*this;}};intmain(){OnShoppingCart cart;cart.getUser(iPad).addItem(iPhone).addItem(iWatch);return0;}运算符重载实现这种实现非常常见比如std::cout中对操作符的重载看下面的简单例子#includestringclass Demo{public:Demo*setColor(intv){color_v;returnthis;}Demo*setHigh(intv){high_v;returnthis;}Demooperator(conststd::stringmsg){msg_msg;return*this;}private:intcolor_0;inthigh_160;std::string msg_;};intmain(){Demo d;dhello world!;return0;}模板中的CRTP实现这个在前面有专门的论述可参看相关“CRTP”的文章下面看例子templatetypename ConcretePrinterclass Printer{public:Printer(std::ostreampstream):stream_(pstream){}templatetypename TConcretePrinterprint(Tt){stream_t;returnstatic_castConcretePrinter(*this);}templatetypename TConcretePrinterprintln(Tt){stream_tstd::endl;returnstatic_castConcretePrinter(*this);}private:std::ostreamstream_;};enumColor{red,blue,green};class CoutPrinter:public PrinterCoutPrinter{public:CoutPrinter():Printer(std::cout){}CoutPrinterSetConsoleColor(Color c){return*this;}};voidTestChain(){CoutPrinter().print(Hello ).SetConsoleColor(Color::red).println(Printer!);}intmain(){TestChain();return0;}CRTP对于大多数的开发者可能觉得有点陌生不想深入学习模板技术的可以只知道有这么一回事即可不必深究。四、应用场景链式调用的应用场景其实也不算少主要有设计模式中的应用比如常见的建造者模式、流畅接口模式等。异步调用在异步调用中可以使用链式调用来处理回调让代码更简洁和方便发布-订阅机制通过事件驱动消息的链式调用发送链式调用优点明显但也有不少的缺点典型的就是链式调用过程中出现异常的处理比较复杂另外一个就是调试过程中复杂的来回跳转增加了调试中的困难。这些大家要根据情况自行评估应用。五、例程在上面学习的基础上看一个比较典型的观察者模式中对事件通知的处理#includeiostream#includefunctional#includevector#includestring#includememory#includealgorithmclass Observer{public:virtual~Observer()default;virtualvoidonEvent(conststd::stringevent,conststd::stringtask)0;};class TaskObserver:public Observer{private:std::string runnerName_;public:TaskObserver(conststd::stringname):runnerName_(name){}voidonEvent(conststd::stringevent,conststd::stringtask)override{std::coutrunnerName_Event: event, task: taskstd::endl;}};class EventControl{private:std::vectorstd::shared_ptrObserverobservers_;public:EventControlinsertObserver(std::shared_ptrObserverob){observers_.push_back(ob);return*this;}EventControldelObserver(std::shared_ptrObserverob){autoitstd::remove(observers_.begin(),observers_.end(),ob);observers_.erase(it,observers_.end());return*this;}EventControlnotify(conststd::stringevent,conststd::stringtask){for(constautoob:observers_){ob-onEvent(event,task);}return*this;}EventControlclear(){observers_.clear();return*this;}};intmain(){EventControl control;autoworkderAstd::make_sharedTaskObserver(workderA);autoworkderBstd::make_sharedTaskObserver(workderB);control.insertObserver(workderA).insertObserver(workderB).notify(task1,start eating...).notify(task2,start eating the soup...).delObserver(workderA).notify(finish,all finished!).clear();return0;}六、总结链式调用作为C中一种比较优雅的设计方式对于提高项目整体设计和开发的简洁性有着很重要的帮助同时其良好的维护性和可扩展性也为后续的开发提供了方便的接口实现。但其本身所固有的一些问题也是比较突出的这就需要设计和开发者根据自己的实际需求进行权衡应用。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

陕西省建设资格注册中心网站肇庆建站模板源码

PyTorch-CUDA-v2.6 镜像与 NVIDIA 显卡驱动兼容性深度解析 在当前深度学习项目日益复杂、部署节奏不断加快的背景下,一个稳定、高效且开箱即用的开发环境已成为工程师和研究人员的核心诉求。尽管 PyTorch 因其动态图机制和简洁 API 被广泛采用,但真正让模…

张小明 2026/1/10 12:17:58 网站建设

怎么做网站的一个横向列表百度优化网站建设

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

张小明 2026/1/9 4:13:02 网站建设

宜昌做网站公司有哪些方法电脑在哪里制作网站

Wan2.2-T2V-A14B模型在政府公共服务宣传中的试点实践 在一次突如其来的流感高发季,某省疾控中心需要迅速向公众传达疫苗接种的重要性。以往,制作一条高质量的公益宣传视频至少需要五到七天:脚本撰写、演员协调、实地拍摄、后期剪辑……每一步…

张小明 2026/1/9 15:25:54 网站建设

wordpress 网站为什么打不开简洁企业网站asp

W5500中断驱动模式下的协议栈事件响应机制深度解析在工业控制、远程监控和智能仪表等嵌入式网络应用中,系统对实时性与资源效率的要求日益严苛。传统的轮询方式虽然实现简单,但其高CPU占用率、响应延迟不可控、功耗高等问题,在多任务或低功耗…

张小明 2026/1/7 13:38:38 网站建设

好用的网站开发软件wordpress广告从哪获取

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于AI的Docker辅助开发工具,能够根据项目描述自动生成优化的Dockerfile和docker-compose.yml文件。要求支持多种编程语言环境配置,包括Python、No…

张小明 2026/1/7 13:38:06 网站建设

定制网站开发是什么做网站 好苦逼

贴片LED极性识别全攻略:新手也能一眼看懂正负极你有没有遇到过这种情况?手焊一块PCB,小心翼翼地把贴片LED放上去,通电后却发现——不亮。反复检查线路、电源、程序,一切正常,最后才发现问题出在最基础的地方…

张小明 2026/1/7 13:37:33 网站建设