C++中关于const的一些使用惯例

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 大家都知道,C++的const关键字是申明一个常量,以前没有深入接触C++的时候也没觉得有什么特别的用法。下面说说我最近工作中发现的关于const的一些使用惯例,我这里所说的使用惯例,是指C++编码中推荐的做法。

最近在公司使用C++做项目,对工作中发现的问题进行总结!

大家都知道,C++的const关键字是申明一个常量,以前没有深入接触C++的时候也没觉得有什么特别的用法。

下面说说我最近工作中发现的关于const的一些使用惯例,我这里所说的使用惯例,是指C++编码中推荐的做法。

1)函数中的const参数
我们可能会看到类似这样的一个函数声明:
void copy(const string& strDestination, const string& strSource);
上面的函数实现将字符串strDestination拷贝到strSource的功能。
有人说我不用const修饰参数也可以呀,没有什么大不了的。

但是在实践中,如果类成员函数不修改其参数的值,且参数类型为指针、引用或者数组的时候,我们一般都会将其参数声明为const。

这样做有什么好处呢?好处就是如果形参是const类型的话,我传递给函数的实参是const类型或者非const类型的都可以。
如果你的程序中形参是非const类型,但是你要传递一个const类型的实参过去,是编译不过的。你必须使用const_cast关键字转化,或者声明一个非const的同类型变量。

2)const函数
我们可能见过这样的函数申明:
void fun() const
在函数的后面加一个const就是const函数,这说明该成员函数不会修改类成员变量的值。

这样做有什么好处呢?如果这个函数不声明为const函数,那该方法只有非const对象能够调用,const对象是不能调用的。

所以在实践中,如果成员函数不修改成员变量,我们一边将该函数声明为const函数。

总之,需要知道的是C++中同一类型加上const和不加const是不同的类型!

目录
相关文章
|
5天前
|
编译器 C++
C++初阶--类与对象--const成员和日期类的实现
C++初阶--类与对象--const成员和日期类的实现
|
5天前
|
编译器 C++
C++语言中const的用法
C++语言中const的用法
15 0
|
5天前
|
编译器 C++
【C++】类与对象(运算符重载、const成员、取地址重载)
【C++】类与对象(运算符重载、const成员、取地址重载)
15 2
|
5天前
|
编译器 C++
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
|
5天前
|
安全 编译器 C++
【C++类和对象】const成员函数及流插入提取
【C++类和对象】const成员函数及流插入提取
|
5天前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
9 0
|
5天前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
|
5天前
|
编译器 C++
|
5天前
|
编译器 C语言 C++
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例
【C++的奇迹之旅(二)】C++关键字&&命名空间使用的三种方式&&C++输入&输出&&命名空间std的使用惯例