C++ 中 const 使用

如果你一看见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++; 不能修改
}

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

C++ 中 const 使用,布布扣,bubuko.com

时间: 2024-10-06 07:27:38

C++ 中 const 使用的相关文章

C++中const使用注意要点(一)

最近看<C++编程思想>发现自己的基础确实不牢固,也想起了以前写代码时也因为const的事情浪费过时间,这里总结下几个要点. 首先说下内部链接和外部链接. 当一个cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有必要信息的单个源文件,这个源文件就是一个编译单元.编译器对每个编译单元(.cpp文件)进行编译生成相应.obj文件.PS:.c文件对应.o文件 接下来关键一步:链接器将所有不相关的.obj文件进行链接,生成最终可执行文件(.exe文件) // a.cpp: #includ

c++ 中const的使用

在c++中,const是这么一个东西:如果你希望能够有一些东西是别人不能修改的,这个时候const就起作用了. const 在使用情况如下: a.修饰常量 const int a; int const a; 这里不论const放什么位置,效果其实都一样的. b.修饰指针: const double *p--const放于指针*之前,代表当前指针指向的内存是不可改变的. double *const p--const放于指针*之后,代表当前指针是不可改变的. const double *const

C++中const限定符的应用

const限定符用于限定变量或对象的值.const对象一旦创建其值不能再改变.在C++中,const与引用和指针相结合,有多种用法.下面将结合<C++ Primer>第五版的内容做一个较详细的介绍. 1.const对象初始化 const对象必须初始化,初始化可以是任意复杂的表达式,如: const int i=get_size(); const int j=42; 2.文件间共享const对象 当以编译时初始化的方式定义一个const对象时,编译器将在编译过程中把用到该变量的地方都替换成对应的

c++中const关键字全面总结

一.const作用 1.const定义常量 注意:const只对它左边的东西起作用,唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用. (1)const修饰变量,以下两种定义形式在本质上是一样的.它的含义是:const修饰的类型为TYPE的变量value是不可变的. TYPE const ValueName = value; const TYPE ValueName = value; (2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初

C++ 中 const 和 static 的作用

目录 const 的主要应用如下: const 关键字使用的注意点: C++中static关键字有三个明显的作用: const的主要应用如下: const 用于定义常量:const定义的常量编译器可以对其进行数据静态类型的安全检查. const 修饰函数形式参数:当输入参数为用户自定义类型和抽象数据类型的时候,将"值传递"改为"const 引用传递" 可以提高效率. const 修饰函数的返回值:如果给"指针传递"的函数返回值加const,则返回

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++中const简介

C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助. Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的. const关键字的作用主要有以下几点: (1)可以定义const常量,具有不可变性. 例如: const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐

结合示例说明C++中const和指针结合时怎么理解

在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现了指针常量.常量指针这些名词,发现明白这些概念对阅读文章时还是比较重要的. 关键:const和指针结合时代码从右往左看 1.常量指针(const pointer) 概念:常量是形容词,也就是说常量指针是一个指针,用const修饰的指针. 按照代码从右往左(概念名词从左往右)的阅读顺序,不妨试着写一下. Ste

C/C++中const的用法

const是C语言的关键字,经C++进行扩充,变得功能强大,用法复杂.const用于定义一个常变量(只读变量),当const与指针,引用,函数等结合起来使用时,情况会变得复杂的多.下面将从五个方面总结const的用法. 1.const位置 const位置较为灵活,一般来说,除了修饰一个类的成员函数外,const不会出现先一条语句的最后.示例如下: #include <iostream> using namespace std; int main(int argc,char* argv[]) {

C++中const char * const name;char * const name;cons

C++中const char * const name;char * const name;const char * name三者之间的区别? 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:HG Zhao链接:http://www.zhihu.com/question/26908463/answer/34499495来源:知乎 const *说明指向的是常量.* const说明指针是常量.const * const说明指针和指向的都是常量.