C++ 中 const 使用

本文详细解释了C++中const的用途,包括修饰变量、指针、函数参数和返回值的方法及场景。重点阐述了const如何应用于指针、函数参数和类成员变量,以及const修饰函数返回值的罕见用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你一看见C++中const就脱口而出:“常量!”那只能说明你对c++不甚了解。或者说你太2了.

const得一些使用方法与场景如下:

1:const修饰普通变量,全局变量,静态变量

1 const int iTmp = 1;
2 int const iTmpEx = 2;

变量保持其原有属性,只是多了一个const,只读属性。

这里,const到底是紧贴变量名还是类型说明符号(int)都无关紧要。在修饰指针时候得不同在后面会详细说明.

2:const修饰指针

const 修饰指针有三种情况 

 //A: 指针指向内容不能修改,指针本身可以修改。
 char chBuffer[] = "test";
 const char *pName = chBuffer;
 pName++;
 cout<<pName<<endl();
 //*pName = 'c'; 非法,指针指向的内容不能被修改
 //B: 指针指向内容能修改,指针本身不可以修改。
 char chBuffer[] = "test";
 char *  const pName = chBuffer;
 //pName++; 非法,指针本身不能被修改
*pName = 'c'; //内容可以被修改
 cout<<pName<<endl();
 //C: 指针指向内容不能修改,指针本身不可以修改。
 char chBuffer[] = "test";
 const char *  const pName = chBuffer;
 //pName++; 非法,指针本身不能被修改
//*pName = 'c'; //非法 内容不可以被修改
 cout<<pName<<endl();

写法,比如:const char *pTmp =chBuffer;

等同于 char const *pTmp = chBuffer;

另外

char* const pTmp = chBuffer;

 

其实,只要看const离哪个近些。 const离pTmp最近,说明它是在修饰指针变量pTmp,表示pTmp不能改变,即不能做pTmp++这种修改pTmp指针的操作。

而 const char* const pTmp = chBuffer;则表示了指针和它指向的内容你都不能做修改。

 

3:const修饰函数参数

void Test(const int iAge)//函数体中,确保iAge不被修改。
void Test(const char *pName)//函数体中,确保pName指向的内容不被修改。
void Test(char* const  pName)//函数体中,确保pName不被修改。
void Test(const char* const  pName)//函数体中,确保pName和pName指向的内容不被修改。
void Test(const ClassTest &obj);// 这种情况使用非常多,这样可以避免调用ClassTest的构造函数,直接传递类对象的地址。
 

4:const修饰函数返回值

const 修饰返回值的用法比较少见,有种用法,比如

const char* Test();

那么接受它返回内容的变量也要写成const char *pRes;

5:const修饰类成员变量

修饰类成员变量时候,初始化需要放到类初始化列表种进行初始化

class CTest{

public:
   int m_iAge;
}

CTest::CTest:m_iAge(99){
}

6. const修饰成员函数

class CTest{

public: 
   void Show()const;
private:
   int m_iAge;
}

void CTest:: Show()const{
 cout<<m_iAge;
// m_iAge++; 不能修改
}

对变量的只读访问,只是类普通变量,排除全局,静态变量。

转载于:https://www.cnblogs.com/zhidao-chen/p/3829855.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值