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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 大家都知道,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是不同的类型!

目录
相关文章
|
7月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
83 2
|
7月前
|
编译器 C++
C++中的内联函数与const限定词的使用
C++中的内联函数与const限定词的使用
46 1
|
6月前
|
编译器 C++
【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 )
本文探讨了C++中类的成员函数,特别是取地址及const取地址操作符重载,通常无需重载,但展示了如何自定义以适应特定需求。接着讨论了构造函数的重要性,尤其是使用初始化列表来高效地初始化类的成员,包括对象成员、引用和const成员。初始化列表确保在对象创建时正确赋值,并遵循特定的执行顺序。
|
6月前
|
编译器 C++
【C++】:const成员,取地址及const取地址操作符重载
【C++】:const成员,取地址及const取地址操作符重载
45 0
|
7月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(下)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
26 1
|
7月前
|
编译器 C++
【C++】类与对象(运算符重载、const成员、取地址重载)
【C++】类与对象(运算符重载、const成员、取地址重载)
50 2
|
7月前
|
编译器 C++
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
【C++】【C++的常变量取地址问题(对比C的不同)】const修饰的常变量&volatile修饰用法详解(代码演示)
|
7月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(中)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
27 0
|
7月前
|
编译器 C语言 C++
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)(上)
从C语言到C++⑤(第二章_类和对象_中篇)(6个默认成员函数+运算符重载+const成员)
22 0
|
7月前
|
存储 编译器 C++
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载
【C++成长记】C++入门 | 类和对象(中) |拷贝构造函数、赋值运算符重载、const成员函数、 取地址及const取地址操作符重载