C++中c语言const用法限定符的几种常见用法

C++中const限定符的几种常见用法_百度知道
C++中const限定符的几种常见用法
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
焦作吧190知道合伙人
采纳数:63
获赞数:58
擅长:暂未定制
例:const int a = 512 ;注解:因为const对象在定义后就不能修改,所以定义时必须初始化。const引用C++ Primer中写道const引用是指向const对象的引用。我认为至少不够精确,这句话意在强调非const引用是指向const对象是错误的,但是没有说明const引用也可以指向一般的对象。我给出的定义是:const引用是这样的一种引用,它只能读取指向对象的值,但不能修改其指向对象的值。例:const int a = 512;int b = 1024;const int &c =
//正确!const int &d =
//正确!int &e =
//错误!指向const对象的指针这是C++Primer对这种指针的称呼。这种用法跟上文的const引用是类似的。同样,把这种指针称作指向const对象的指针是不够精确的,因为它也可以指向非const对象,只不过这种指针自以为指向const对象,即,这种指针只能读取指向对象的值,但不能修改其指向对象的值,无论这个对象是不是const对象。例:const int a = 512;int b = 1024;const int *c = &a;
//正确!c = &b;
//正确!int *d = &a;
//错误!const指针这也是C++Primer对这种指针的称呼。这种说法容易与const引用混淆,事实上表达的意义完全不同。const指针的特点是本身的值不能修改。任何企图给const指针赋值的行为(即使给该指针赋本身的值)都会导致编译时的错误。例: int a = 0;int *const b = &a;b =
//c是另外一个指针,错误!b =
//赋本身的值,错误!指向const对象的const指针别被绕晕了,其实就是上述两种指针的结合体。这种指针,既不能修改本身的值,也不能修改其所指向对象的值。例:const int a = 0;const int *const b = &a;const成员函数又被称作常量成员函数。这种成员函数只能读取而不能修改其所属对象的数据成员。例: class A{public:bool IsSame(const A &a)};其它相关:const_iterator每种容器类型中都定义了const_iterator类型,这种类型只能用于读取容器内的元素,但不能改变其值。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++里面在函数形参里面加上const修饰符是限定啥功能的?_百度知道
c++里面在函数形参里面加上const修饰符是限定啥功能的?
晕,我对这个const修饰的东西,不大感冒!所以想明白一下在形参里面给参数加上const这东西有啥用的啊!?常量好像在其声明的时候就需要赋值的哈!!那这里面给形参加上这个有啥用?谢...
晕,我对这个const修饰的东西,不大感冒!所以想明白一下在形参里面给参数加上const这东西有啥用的啊!?常量好像在其声明的时候就需要赋值的哈!!那这里面给形参加上这个有啥用?谢谢懂的同学说一下下!!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
匿名用户知道合伙人
形参里限定为const表明传入的形参必须为常量也就以为着传入的参数不能被改变这是一种保护数据的方式如果我的回答您还满意请轻轻点击鼠标选为满意答案 嘿嘿
匿名用户知道合伙人
函数里形参加const不是代表此形参必须是一个const变量,而是代表这个参数不能在函数中被修改。当然如果一个形参不是按照引用调用,则加const没什么意义,因为函数中使用的只是接收参数的副本。你看到的函数里形参前加const的一般都是这样的吧。T代表某总类型(如int,char...)
function(const T& x,...);const限定符表示在function这个函数的函数体中,一定不能对x进行修改,x为函数接收的变量的引用,也就是别名,如果修改,就对函数外部的那个变量进行了修改。举一个具体些的例子,比如你要求某个int的平方,写一个square函数int square( const int& a ){ return a*a; }//这个写法中没有修改a的值,因此正确但若写成 int square( const int& a ){ a=a*a; }//则程序会报错啦。因为你修改了a的值,这是const所不允许的。这样你在函数外部声明某变量int var=8;你使用square(var)后var的值也会变,这显然是你不希望的。
匿名用户知道合伙人
const这个限制是将变量变为常量。也就说它是恒固不变的量!
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。跟我一起学C++之从C到C++(const限定符)
const限定符
1.用const给字面常量起个名字(标识符),这个标识符就称为标识符常量;因为标识符常量的声明和使用形式很像变量,所以也称常变量
2.定义的一般形式:
const 数据类型 常量名=常量值;
(2)数据类型 const 常量名=常量值;
3.例如:const
float PI=3.14159f;
4.注意事项:
(1)常变量在定义时必须初始化;
(2)常变量初始化之后,不允许再被赋值;
代码示例:
//main.cpp
#include &iostream&
//引入命名空间
int main(void)
//1.Error,常量必须初始化
const int a = 100;
//a = 200;
//2.Error,常量不能重新被赋值
int b = 22;
const int *
//const在*左边,表示*p为常量,经由*p不能更改指针所指向的内容
//*p = 200;
//2.Error,常量不能重新被赋值
//int * const p2;
//1.Error,p2为常量,常量必须初始化
int * const p2 = &b; //const在*右边,表示p2为常量
//int c =100;
//p2 = &c;
//2.Error,常量不能重新被赋值
*p2 = 200;
cout&&*p&&
错误用法编译错误提示信息:
error C2734: “a”: 如果不是外部的,则必须初始化常量对象
2. const int a = 100;a = 200;
error C3892: “a”: 不能给常量赋值
没有更多推荐了,c++之const限定符
有时候我们希望定义这样一个变量,它的值不能被改变。为了满足这个要求,可以用const对变量的类型加以限定。
const限定符
(1):因为使用const限定符声明的变量就是常量,是不可以被修改的,所以在声明时必须进行初始化的。
(2):默认情况下,const限定的变量的作用域被设定为文件作用域。但是在某些时候,我们想多个文件共享const变量时,解决办法就是:对于const变量不管是声明还是定义都添加extern关键字。
const的引用
和普通引用不同,对常量的引用不能被用作媒介去修改它所绑定的变量。
const int &num_quote =
num_quote = 12;
&num_quote1 =
(1):对常量的引用必须是使用const限定符修饰的变量
(2):不允许通过对常量的引用去修改引用的目标对象
(3):在c++语言中,不允许随意改变引用所绑定的对象的,所以从这层意义上去理解所有的引用都算是常量。
c++中,引用的类型必须和其所引用的对象的类型一致,但是有两个例外,第一个例外就是在初始化常量引用时,允许用任意表达式作为初始值,只要该表达式的结果可以转换为引用的类型即可。
double dval = 3.14;
const int & ri =
其实绑定在ri上的对象还是一个int型,而不是double型的数据,因为上述代码在编译器变成如下形式:
cosnt int temp=
cosnt int & ri=
在这种情况下,ri绑定了一个临时量,临时量就是当编译器需要一个空间来暂存表达式求值结果时临时创建的一个未命名的变量。因为我们规定const引用是不可以修改它绑定的那个对象的值的,所以其实就是我们不准去修改那个临时量,这也就是为什么const的引用可以使用任何表达式作为初始值。
对const的引用可能引用一个非const的对象,但是不可以使用const的引用去修改目标对象的值
int num = 4;
const int & num1 =
指针和const
指向常量的指针不能用于改变过其所指对象的值。要想存放常量对象的地址,只能使用指向常量的指针。
const double pi = 3.14;
double * ptr = &
const double * ptr1 = &
*ptr1 = 43;
指针类型必须和其所指对象的类型一致,但是有 两个例外。第一个例外就是允许一个指向常量的指针指向一个非常量的对象。所谓的指针常量仅仅要求不能通过该指针改变其对象的值。
因为指针是一个对象,所以也可以把指针本身定义为常量,常量指针必须初始化(和其他常量是一样的),而且一旦被初始化,它的值(存放在指针中的地址)就不能改变。常量指针不变的是指针自己的值,而不是其对象的值
int num = 0;
int * const num_pointer = &
const int num1=2;
const int * const num1_pointer=&num1;
名词顶层const表示指针本身是一个常量,而用名词底层const表示指针所指的对象是一个常量。顶层const可以表示任意的对象,用于声明引用的const都是底层const
const限定符总结
C++中const限定符的几种常见用法
const限定符的用法总结
C++11学习之const限定符
C++:const限定符基本解析
const限定符的作用
const限定符
C++ const限定符
对C++中const T*&含义的理解
C++学习之指针和const限定符
没有更多推荐了,C++中const限定符的几种常见用法
将一个对象定义为不可更改的对象,称为const对象。
例:const int a = 512 ;
注解:因为const对象在定义后就不能修改,所以定义时必须初始化。const引用
C++ Primer中写道“const引用是指向const对象的引用”。我认为至少不够精确,这句话意在强调非const引用是指向const对象是错误的,但是没有说明const引用也可以指向一般的对象。我给出的定义是:const引用是这样的一种引用,它只能读取指向对象的值,但不能修改其指向对象的值。
例:const int a = 512;
int b = 1024;
const int &c =
const int &d =
//错误!指向const对象的指针
这是C++Primer对这种指针的称呼。这种用法跟上文的const引用是类似的。同样,把这种指针称作“指向const对象的指针”是不够精确的,因为它也可以指向非const对象,只不过这种指针“自以为指向const对象”,即,这种指针只能读取指向对象的值,但不能修改其指向对象的值,无论这个对象是不是const对象。
例:const int a = 512;
int b = 1024;
const int *c = &a;
int *d = &a;
这也是C++Primer对这种指针的称呼。这种说法容易与“const引用”混淆,事实上表达的意义完全不同。const指针的特点是——本身的值不能修改。任何企图给const指针赋值的行为(即使给该指针赋本身的值)都会导致编译时的错误。
int a = 0;
int *const b = &a;
//c是另外一个指针,错误!
//赋本身的值,错误!
指向const对象的const指针
别被绕晕了,其实就是上述两种指针的结合体。这种指针,既不能修改本身的值,也不能修改其所指向对象的值。
例:const int a = 0;
const int *const b = &a;
const成员函数
又被称作常量成员函数。这种成员函数只能读取而不能修改其所属对象的数据成员。
例: class A{
bool IsSame(const A &a)
其它相关:
const_iterator
每种容器类型中都定义了const_iterator类型,这种类型只能用于读取容器内的元素,但不能改变其值。
例:vector&string&
for(vector&string&::const_iterator iter = text.begin(); iter! = text.end(); ++iter)
暂时就写这么多,如有新发现会持续更新。
欢迎大家访问我的独立技术博客
const限定符的用法总结
C++11学习之const限定符
c++之const限定符
const限定符
const限定符的作用
const限定符总结
C++总结之const限定符
关于const 限定符
C++:const限定符基本解析
带const限定符的常量成员函数
没有更多推荐了,}

我要回帖

更多关于 const的用法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信