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

最近在公司使用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书不同的类型!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 11:22:43

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

C++ 类中的const关键字

//类中的const关键字 #include<iostream> using namespace std; class Point{ public: //这个const关键字本质上修饰的是this指针 int GetX() const //====>int GetX(const this) { //因为this被隐藏,所以const关键字只好写在函数后面 //x++; //加上const关键字 报错 error C3490: 由于正在通过常量对象访问“x”,因此无法对其进行修改 //这个

C++总结:C++中的const和constexpr

C++中的const可用于修饰变量.函数,且在不同的地方有着不同的含义,现总结如下. const的语义 C++中的const的目的是通过编译器来保证对象的常量性,强制编译器将所有可能违背const对象的常量性的操作都视为error. 对象的常量性可以分为两种:物理常量性(即每个bit都不可改变)和逻辑常量性(即对象的表现保持不变).C++中采用的是物理常量性,例如下面的例子: 1 2 3 4 5 6 7 struct A {     int *ptr; }; int k = 5, r = 6;

C++ 中有关const引用的一点小知识

在读<C++ Primer>时,发现之前对const的概念不是很清晰,只知道如何去使用,于是翻开const引用部分又阅读了一遍,发现有两点自己要注意的地方 1.const限定的对象不可以初始化非const引用 ex. 1 const int src = 512; 2 const int &ok_dest = src; //ok: 引用和初始化对象都是const 3 int &err_dest = src; //error : 引用为非const 原因很简单, src 是不可以被

详解C和C++中的const关键字

在讲下面的内容之前,要先看看这篇文章const.static变量的存储位置 一.C中的const 作用:(1)可以定义const常量,具有不可变性. (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改. 同宏定义一样,可以做到不变则已,一变都变! (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. 还是上面的例子,如果在函数体内修改了i,编译器就会报错: (5) 可以节省空间,避免不必要的内存

C/C++中的const真正的用法

const基础知识(用法.含义.好处) intmain() { constint a; intconst b; constint *c; int* const d; constint * const e ; return0; } Intfunc1(const ) 初级理解:const是定义常量==>const意味着只读 含义: //第一个第二个意思一样代表一个常整形数 //第三个c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) //第四个d常指针(指针变量不能被修改,但

C++中的const完全解析

1. const修饰普通变量和指针 const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的.它的含义是:const修饰的类型为TYPE的变量value是不可变的.对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变.例如:const int nValue:         //nValue是constint const nValue:    // nValue是const但是对于指针类型的TYPE

C与C++中的const

同样,有下面一段代码: 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 const int i = 0; 7 int *j = (int *) &i; 8 *j = 1; 9 cout<<"i address = 0x"<<hex<<&i<<","<<"j address = 0x&qu

C/C++中的const与define

const int main() { const int a; int const b; const int *c; int * const d; const int * const e ; return 0; } 含义: 第一个第二个意思一样 代表一个常整形数 第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改) 第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改) 第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改) 结

c/c++中的const

const基础知识(用法.含义.好处) const int a; int const b; const int *c; int * const d; const int * const e ; 含义: 第一个第二个意思一样 代表一个常整形数: 第三个 c是一个指向常整形数的指针(所指向的内存数据不能被修改,但是本身可以修改): 第四个 d 常指针(指针变量不能被修改,但是它所指向内存空间可以被修改): 第五个 e一个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改). const的好处