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和引用

上面一篇博客我们已经介绍了基本的const,对于这篇博客,我先说下引用是什么 引用说白了就是为对象另外起了一个名字,引用类型引用另一种类型。 定义方式: 将声明符写成&d的形式来定义引用类型其中d是声...
  • lishuzhai
  • lishuzhai
  • 2016年01月28日 18:24
  • 2068

C++的引用与const指针的关系以及各种传递方式

首先我们知道 const int p 与 int const *p 是一样的,即 *p 是常量;而 int const p 跟上面是不一样的,即 p 是常量;我们知道引用只是一个别名,与变量共享存储...
  • Sandeldeng
  • Sandeldeng
  • 2016年10月24日 23:02
  • 452

C/C++——const用法完整总结

C/C++——const用法完整总结
  • Linux_ever
  • Linux_ever
  • 2016年05月08日 10:49
  • 1149

浅析C++中的const(比#define的优势)

使用const关键字来声明变量,表明,内存被初始化后,程序便不能再对它进行修改。 const int Months = 12; 此时,应该注意的是应该在声明中对const进行初始化,我们应该避免如...
  • wangshubo1989
  • wangshubo1989
  • 2015年09月08日 11:55
  • 18687

c++const指针与函数调用

在我的博客http://blog.csdn.net/caoyan_12727/article/details/52064958中,已经讨论了动态绑定和静态绑定,以及在缺省参数情况下虚函数的绑定情况。一...
  • caoyan_12727
  • caoyan_12727
  • 2016年09月10日 10:50
  • 394

C++回顾之const对象、const成员函数、mutable类型

总结const的各种用法,主要讲述const对象,及const 成员函数,还有mutable修饰的数据成员...
  • ab198604
  • ab198604
  • 2014年02月08日 11:02
  • 3464

总结const的用法

1. const的用法: (1)定义常量 (2)修饰函数的参数 (3)修饰函数的返回值 (4)修饰函数的定义体 2. 用const 修饰函数的参数 (1)const 只能修饰输入参数 如果输入...
  • htyurencaotang
  • htyurencaotang
  • 2013年07月08日 23:30
  • 10917

this与const成员函数不得不提二三事

在编写C++代码时,由于个人习惯的不同,成员函数定义时(若有成员的调用),有些人喜欢指明this指针,而有些人又不乐意写this。当然,提这个并不是要说个人习惯的好坏,不知你是否想过:使用this时,...
  • oYinGui1
  • oYinGui1
  • 2014年06月07日 23:02
  • 1482

c++之const限定符

有时候我们希望定义这样一个变量,它的值不能被改变。为了满足这个要求,可以用const对变量的类型加以限定。 const限定符 (1):因为使用const限定符声明的变量就是常量,是不可以被修改...
  • qq_35644234
  • qq_35644234
  • 2016年08月25日 16:47
  • 536

C++函数中const形参与非const形参

关于C++函数中形参、实参const问题,比较绕,在此特意总结归纳一下: 先看一个例子: void swap1( int *x, int *y){ int temp=*x; *x=*y; ...
  • ziyanguang1989
  • ziyanguang1989
  • 2013年11月14日 17:09
  • 1112
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中const的使用简介
举报原因:
原因补充:

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