首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在类的const版本中选择非const版本?

在类的const版本和非const版本之间选择,取决于具体的需求和设计考虑。下面是一些可能的原因:

  1. 需要修改对象的状态:如果需要在类的成员函数中修改对象的状态或者调用其他只接受非const对象的函数,那么必须选择非const版本。const版本的成员函数只能读取对象的状态,不能修改。
  2. 遵循接口一致性:如果类的接口中有非const版本的成员函数,为了保持接口的一致性,可能需要选择非const版本。这样可以确保在使用该类的代码中,无论是调用const版本还是非const版本的成员函数,都能够按照相同的方式处理对象。
  3. 提高代码的可读性和可维护性:如果类的成员函数中没有修改对象状态的需求,并且不需要调用其他只接受非const对象的函数,那么选择const版本可以明确地表达该函数不会对对象进行修改,从而提高代码的可读性和可维护性。

需要注意的是,选择const版本并不意味着完全放弃对对象的修改能力。在const版本的成员函数中,可以通过mutable关键字声明某些成员变量为可变的,从而允许在const函数中修改这些成员变量的值。

对于类的const版本和非const版本的选择,没有绝对的规定,需要根据具体的设计和需求进行权衡。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

新增空约束字段不同版本演进

出现以上问题核心,还是为何有为空记录存储于有NOT NULL空约束。...这种新增空约束字段不同版本确实有一些细节变化,下面做一些简单测试。...NULL约束字段,但报错信息变了,ORA-01758: table must be empty to add mandatory (NOT NULL) column,这个错误号之前版本有定义,不是新号...根据错误提示,我们删除表数据,再新增字段,可以增加,但不能再插入一条NULL至这个空约束字段。 ?...至此,12c修复了11g这个空约束字段允许保存空值bug,同时又支持11g新增默认值空字段使用数据字典存储特性,并且做了扩展支持,满足范围更大了。 小问题隐藏了大智慧。

3.1K10

版本 Python 使用灵活切换

今天我们来说说 windows 系统上如果有多版本 python 并存时,如何优雅进行灵活切换。...虽然 Python3 已经出来很久了,虽然 Python2 即将成为历史了,但是因为历史原因,依然有很多公司老项目继续使用着 Python2 版本(切换成本太高),所以大多数开发者机器上 Python2...和 Python3 都是并存,本文主要说明这种情况下如何便捷 Python2 和 Python3 之间进行切换。...WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Python34;C:\Python27; 这时候我们直接在 cmd 输入 python,已经可以被识别了,但是识别的总是路径环境变量中排前面的那个版本...-m pip install requests python36 -m pip install requests 这样安装依赖库就是各个版本之间相互独立

2.3K40

特定环境安装指定版本Docker

通常用官方提供安装脚本或软件源安装都是安装比较新 Docker 版本,有时我们需要在一些特定环境服务器上安装指定版本 Docker。今天我们就来讲一讲如何安装指定版本 Docker 。...Docker 如果之前存在其它版本Docker,可以使用以下命令先移出: Ubuntu $ apt-get purge docker-engine CentOS $ yum remove docker-engine...安装指定版本Docker 根据实际情况,选定要安装 Docker 版本进行安装。...这里以安装 1.13.1 版本为例: Ubuntu 如果 Ubuntu 为 14.04 建议先装上以下两个软件包。...raw=true | sh 使用需要 Docker 版本替换以下脚本 ,目前该脚本支持 Docker 版本: 1.10.3 1.11.2 1.12.1 1.12.2 1.12.3 1.12.4

3.6K20

语义化版本与其Python使用

今天公司处理了一个线上问题,涉及到 Python 处理语义化版本(Semantic Versioning),值得作为一个主题记录一下。...起初模板版本号是硬编码到代码,造成影响就是每次模板版本升级时候,后端服务都要重新部署。商家应用模板迭代频繁时候,几乎大部分后端代码上线唯一改动只有修改商家应用模板版本号。...不过当子版本号不是一位整数时,问题就出现了: 例如将版本号从1.0.9升级到1.0.10,语义化版本规范,1.0.10是比1.0.9版本更高,然而在python字符串比较(按位比较),1.0.9... Python 处理并比较语义化版本 我们已经知道了语义化版本是由.分隔,一个很直接方案是分段比较每一段版本大小。...我也将修改商家模板版本接口业务逻辑改为了使用packaging.version模块用于验证新版本合法性。 总结 本文大致介绍了语义化版本及其 Python 处理方式。

1.2K30

【C++】C++ this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

一、常量成员函数 1、const 修饰成员函数分析 C++ , 普通静态成员函数 , 可以使用 const 进行修饰 , 下面的 Student , 定义了 void fun(int... * 右边修饰是指针本身 ; 代码示例 : class Student { public: // 使用 const 修饰 成员函数 // const 关键字可以 // void...const int age; // 年龄 const int height; // 身高 如果 成员函数 被 const 关键字 声明为 常量成员函数 , 则在该函数 不能修改 对象 任何成员变量...(const Student* pThis, int age, int height) // 左数右指 , const * 左边修饰是内存数据, const * 右边修饰是指针本身...(const Student* const pThis, int age, int height) // 左数右指 , const * 左边修饰是内存数据, const * 右边修饰是指针本身

17820

为什么你应该选择 Cornerstone 4 for Mac 作为你版本控制工具

它支持多种版本控制系统,包括Subversion,Git,Mercurial和Perforce等,您可以按照您团队喜好进行选择。它可帮助您迅速地查找问题,协调工作,并及时完成项目。...软件主要功能包括文件比对、文件合并、版本控制、冲突解决、代码审查等。...Cornerstone 4 for Mac还支持自动处理代码库(repository)变更,可以代码库仅保留必要内容,例如源代码文件、二进制文件和项目文件夹等。...而且,它还可以自动管理版本备份,保证你数据安全,并且提供灵活版本恢复选项。 Cornerstone 4 for Mac还采用了快速索引技术,可以节省时间并提高效率。...当代码库文件很多时,Cornerstone可以快速将文件都索引到内存,并在查询时使用这些索引进行快速查找,从而提高了工作效率。

46140

ThreadX系列 | 最新v6.1.6版本MDK移植方法

去年在threadx刚开源时候移植体验了一波,并分享了移植文章,最近发现这一年threadx不断更新,目前更新至v6.1.6版本,所以更新最新版本移植方法,顺便吐槽一下! 1....添加源码到MDK工程 新建threadX/common分组,添加threadX/common/src下所有c文件: ? 「新建threadX/ports分组,此时需要根据编译环境来选择」。...寻找RAM首块可用地址传入tx_application_define函数供使用,也就是first_unused_memory指针值 「但是threadxv6版本及以后,竟然想在这个文件接管原有的处理器启动文件...③ 将设置堆栈代码全部注释(堆栈环境已经STM32启动文件设置了) ? ④ 将 threadx 定义中断向量表全部注释(使用STM32启动文件定义向量表): ?...编写应用代码 新建一个application_entry.c文件并加入到工程,在其中编写两个任务,然后tx_application_define创建这两个任务。 5.1.

89460

每天一道 python 面试题 - Python(metaclass) 详细版本

在内存创建一个名称为“ ObjectCreator”对象。 这个对象()本身具有创建对象(实例)能力,这就是为什么它是一个。...type是Python用于幕后创建所有。 现在,您想知道为什么用小写而不是小写Type? 好吧,我想这与str创建字符串对象int和创建整数对象一致性有关。...Python 3 设置元语法Python 3已更改: class Foo(object, metaclass=something): ......自定义元主要目的是创建时自动更改它。 通常,您要对API进行此操作,API要创建与当前上下文匹配。 想象一个愚蠢示例,该示例,您决定模块所有属性都应大写。...type实际上是它自己。这不是您可以纯Python复制东西,而是通过实现级别上作弊来完成。 其次,元很复杂。您可能不希望将它们用于非常简单更改。

40210

每天一道 python 面试题 - Python(metaclass) 详细版本

在内存创建一个名称为“ ObjectCreator”对象。 这个对象()本身具有创建对象(实例)能力,这就是为什么它是一个。...type是Python用于幕后创建所有。 现在,您想知道为什么用小写而不是小写Type? 好吧,我想这与str创建字符串对象int和创建整数对象一致性有关。...Python 3 设置元语法Python 3已更改: class Foo(object, metaclass=something): ......自定义元主要目的是创建时自动更改它。 通常,您要对API进行此操作,API要创建与当前上下文匹配。 想象一个愚蠢示例,该示例,您决定模块所有属性都应大写。...type实际上是它自己。这不是您可以纯Python复制东西,而是通过实现级别上作弊来完成。 其次,元很复杂。您可能不希望将它们用于非常简单更改。

57200
领券