首页 / 知识
关于类:C ++中的“ Helper”函数
2023-04-16 10:21:00

'Helper' functions in C++在重构一些旧代码时,我去除了一些实际上应该是静态的公共方法,因为它们a)不要对任何成员数据进行操作或调用任何其他成员函数,并且b)因为它们在其他地方可能有用。 这促使我思考将"辅助"功能组合在一起的最佳方法。 Java / C#方式将是使用带有私有构造函数的静态函数类,例如:
但是,作为C ++,您还可以使用名称空间:
在大多数情况下,我认为我更喜欢名称空间方法,但我想知道每种方法的优缺点。 例如,如果使用类方法,会不会有开销? 开销不是问题,尽管名称空间具有一些优势
当人们需要一种类型时,可能会在
为了增加Pieter的出色响应,命名空间的另一个优点是,您可以转发声明放置在命名空间中其他内容的东西,尤其是结构。
还有命名空间...
一旦结束了一个包含数百个源文件的项目,在小标题更改后,向前声明对您的编译时间会有很大的影响。 从paercebal编辑 答案太好了,以至于由于枚举错误而使其死亡(请参阅注释)。我用结构替换了枚举(只能在C ++ 0x中进行声明,而在当今的C ++中则不能进行声明)。 使用名称空间的主要优点是您可以重新打开它并在以后添加更多内容,而不能使用类来实现。这使这种方法更适合于松耦合的助手(例如,您可以为整个库提供一个Helpers命名空间,就像所有STL都在:: std中一样) 类的主要优点是可以使用它嵌套在类内部,而不能在类中嵌套名称空间。这使这种方法更适合紧密耦合的助手。 在类和名称空间中使用它们不会有任何额外的开销。 我如何在C ++中正确使用名称空间的答案的复制/修剪/重做部分。 使用"使用" 您可以使用"使用"来避免重复使用辅助功能的"前缀"。例如:
命名空间组成 命名空间不仅仅是包。另一个示例可以在Bjarne Stroustrup的" C ++编程语言"中找到。 在"特别版"的8.2.8命名空间组成中,他描述了如何将两个命名空间AAA和BBB合并为另一个名为CCC的命名空间。因此,CCC成为AAA和BBB的别名:
您甚至可以从不同的名称空间导入选择符号,以构建自己的自定义名称空间接口。我还没有找到实际的用法,但是从理论上讲,这很酷。 命名空间提供了Koenig查找的其他优点。使用帮助程序类可能会使您的代码更加冗长-通常,您需要在调用中包括帮助程序类的名称。 命名空间的另一个好处是以后的可读性。使用类时,您需要包含" Helper"之类的词,以提醒您以后该特定类不用于创建对象 实际上,两者都没有开销。编译后,仅使用的名称改写有所不同。 创建辅助函数时,我倾向于使用匿名名称空间。由于(通常)仅应由关心它们的模块看到它们,因此这是控制依赖项的好方法。 |
最新内容
相关内容
linux操作数据库命令?
linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参数,如何实现MySQL数据库的基本用法在linux下1、mysql all-databaselinux下载数据命令?
linux下载数据命令?,软件,工具,数据,系统,代理,官网,网络,名称,网址,盘中,在linux下如何下载svn上的文件?1、首先,打开linux,进入主界面,然后在主做数据linux常用命令?
做数据linux常用命令?,工作,系统,基础,网络,数据,标准,管理,工具,地址,命令,linux运维常用命令Curl命令用法 curl语法和参数选项 # curl [optlinux数据库升级命令?
linux数据库升级命令?,系统,信息,时间,最新,网络,名字,地址,管理,简介,传播,linux下手动更新locate所在数据库的指令updatedb为什么行不通_百linux调用函数的命令?
linux调用函数的命令?,系统,代码,策略,上调,时间,设计,通信,网络,设备,项目,如何在Linux内核里增加一个系统调用?在一个进程中创建3个线程,名字数据库导出linux命令?
数据库导出linux命令?,密码,数据,数据库,情况,地址,系统,工具,网上,名字,命令,linux系统导出oracle数据库数据导出数据库对象在PL/SQL Developlinux外部命令调用?
linux外部命令调用?,系统,软件,标准,命令,盘中,管理,外部,进程,程序,内存,linux借用外部命令expr,实现计算器功能,利用管道,进程你得装一个callinux命令和库函数?
linux命令和库函数?,系统,标准,管理,地址,服务,库函数,环境,平台,第一,状态,1.linux系统调用和库函数调用的区别系统调用和库函数在执行的效果linux怎么调用命令行?
linux怎么调用命令行?,系统,地址,工具,工作,首页,终端,命令,密码,信息,情况,linux怎么打开命令行窗口1、在Linux系统中,打开命令行窗口需要使用linux命令与数据流?
linux命令与数据流?,工作,地址,系统,信息,命令,目录,标准,网络,管理,常用命令,linux基本操作命令linux常用命令有pwd命令、cd命令、ls命令、calinux恢复数据库命令?
linux恢复数据库命令?,工具,系统,软件,数据,盘中,密码,命令,备份,数据库,文件,linux如何恢复删除的文件1、接下来小编就给大家带来linux恢复误浏览器调用linux命令?
浏览器调用linux命令?,系统,信息,人工智能,软件,数据,首次,地址,代码,咨询,服务,求助大神,如何通过网页使用python向linux系统发送一些命令执