C++中const的使用简介

原创 2012年03月28日 09:46:36

所谓常量是一个恒定不变的量,常量提供了C++程序设计中的安全性和可控性。常量用const标识,其一个作用是用来替代宏替换,const提供了对数值的严格的类型检查,相对于宏替换而言,const提供了强大的安全保障。

 

const通常用于修饰函数参数为指针和引用的情况,且只能修饰输入参数,如果输入参数采用值传递方式,由于在函数调用时将自动产生临时变量用于复制实参,原参数不会被修改,因此不需使用const进行修饰。

 

在函数体中按照cosnt所修饰的部分进行常量化,如果形参为const Type* parameter,则不能对传递进来的指针的内容进行修改,即该方式用于保护原指针所指向的内容,如果形参是const Type& parameter,则不能对传递进来的引用对象进行改变,即该对象保护了源对象。

 

建议对于非内部数据类型的输入参数,不要使用值传递方式,而使用“const 引用对象”传递方式,这样做是为了提高效率。而对于那些输入参数是内部数据类型的情况,则建议不要将“值传递”的方式修改为按“const 引用传递”方式。

 

下面介绍一点关于函数返回值是const类型的情况。

如果一个函数的返回值是常量,意味着原变量不能被修改,如果采用按值返回的方式,那么对于返回值是内部数据类型的情形,这种函数声明就是没有意义的。

如下所示:

int function0()

{return 0;}

 

const int function1()

{return 0;}

 

void main()

{

       const int a=function0();

       int b=function1();

}

编译和运行上述程序,可以看出,对于内部数据而言,按值返回是否是一个cosnt没有任何影响,因为这种函数声明是没有任何意义的,所以不建议使用这种情况。对于非内部数据类型,情况就不一样了,如果按函数返回一个类对象const常量,那么这个返回值将被保护,也就是说,这个返回值不能作为左值来使用。

 

const可以用于类成员函数的声明,如下:

void function() const{}

被修饰的成员函数将无法对成员变量进行修改,如果发生修改成员变量的语句,那么将会编译出错,大大的提高了程序的健壮性。

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

相关文章推荐

C++中const的使用简介

所谓常量是一个恒定不变的量,常量提供了C++程序设计中的安全性和可控性。常量用const标识,其一个作用是用来替代宏替换,const提供了对数值的严格的类型检查,相对于宏替换而言,const提供了强大...

Ajax技术简介及使用

AJax (Asynchronous JavaScript And Xml) 即异步的JavaScript  和 XML 是指一种创建交互式网页应用的网页开发技术 是一种独立于Web服务器软件的浏览器...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

const的使用

在C/C++中关键字const用来定义一个只读的变量或者对象
  • J8121
  • J8121
  • 2016-07-16 22:01
  • 94

const的常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量1.用于定义常量变量:const int Val = 10; Val = 20; //错误,不可被修改2.const作为形式参数...

const的那些事

1. const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本...

FiddlerCoreAPI 使用简介

大名鼎鼎的Fiddler大家都知道,或者用过,Fiddler 开放了他的FiddlerCoreAPI  提供给开发者调用,来处理所有的http请求,功能就如Fiddler一样强大,下面我们来简单介绍一...

Android Xutils框架使用详解

xUtils简介xUtils 包含了很多实用的Android工具。 xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,...

MediaInfo使用简介(新版本支持HEVC)

MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码)。他除了提供DLL之外,本身也提供GUI工具用于查看视频信息。我使用中发现,新版本的Media...

静态java代码检查工具-findbug使用简介

今天代码质量再次强调java代码提交SVN前要经过findBugs检查,虽然根据菜单我也基本会有findBugs插件,但为了更全面的学习、更高效的利用,我搜索学习了findbugs的用法。 检查...

SuperAgent使用简介

SuperAgent SuperAgent是轻量级更为优化的ajax API,对比大量糟糕的现存的API,SuperAgent是灵活的、易读的、并且非常易学,同时SuperAgent可用于Node....
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)