C++中的const的用法

本人对C++中的const的用法有很大问题,因为const老是加到类啊,函数啊,变量啊之类的,把我搞得晕头转向了,有哪位高手能指点下啊,小弟不胜感激... 本人对C++中的const的用法有很大问题,因为const老是加到类啊,函数啊,变量啊之类的,把我搞得晕头转向了,有哪位高手能指点下啊,小弟不胜感激 展开
 我来答
傅夏生
2011-09-21 · TA获得超过1850个赞
知道答主
回答量:65
采纳率:0%
帮助的人:73.7万
展开全部
个人的一些笔记,希望可以帮助你
const 的使用
const经常用来修饰一个值不能改变的量,安全,并且能消除存储操作
const的几种用法:
(1) 说明值常量
(2) 说明指针
(3) 说明函数参数及其返回值
(4) 说明类的常量和成员函数

const 说明值常量
值常量的说明一般放在头文件或者文件的开始部分,也可以放在类中进行说明
(1) 说明符号常量,表明符号代表的是一个常量,语法:
<类型>const<常量名>=<表达式>,<常量名>=<表达式>……
例如:double const PI=3.14; const double PI=3.14;
(2) 说明数组常量,语法格式:
<类型>const<数组名>[大小]={初值表};
const类型> <数组名>[大小]={初值表};
(3) 说明对象常量,语法格式:
<类名>const<对象名>;
const <类名> <对象名>;
(4) 说明引用常量
(5) const与C语言中的#define的差别
无参宏不是符号常量,没有数据类型,没有值,在内存中不分配地址。它在预处理时做宏替换,不可能做类型检查。
const定义的常量是符号常量,有数据类型,也有值,且其值不可改变,在内存中有地址,编译时做类型检查。

Const和指针

Const和指针的三种经典组合
(1) 指向常量的指针——const int *p;
(2) 常指针——char *const pc=’a’;
(3) 指向常量的常指针——const char *const pc=’a’
指向常量的指针(指针指向一个不可变量)
指针在指向有一个常量后,不能通过指针修改这个常量,但是可以指向一个新的常量,例如:
Const char *pc=”ABCD”;
Pc[3]=’a’;不合法,企图修改原来指向的常量
Pc=“WERT”;合法指向另外一个常量

常指针
要把指针变量中的值(也就是地址)声明为常量,采用以下语法:
<类那些>*const<指针名>[=<初值>;]
这样定义的指针变量中存放的指针是个常量,称为常指针。定义后,该指针指向固定的内存单元,不能再指向其他内存单元,通过它可以修改所指单元里存放的内容。例如:
Char *const pc=”ABCD”;
Pc[3]=’a’;合法,指针指向的对象可以修改
Pc=”QWER”;不可以,指针的指向不可以修改
指向常量的常指针
指针变量中存放的指针本身和指针所指向的对象都是不可以改变的。
例如:
Const char *const pc=”ASDF”;
Pc[3]=’a’;不合法,不能改变指针所指对象的值
Pc=”QWER”;不合法,不能改变指针的指向

Const说明函数参数和返回值
用const限定函数参数和返回值,是const最重要的用法。用const修饰函数参数意味着传过来的实参在函数中是不能被修改的。一般情况下不需要,但是在用指针和引用传值的场合,为避免实参被修改,就用const修饰,更安全。
修饰函数的返回值,意味着该返回值不能被修改。如果传值并返回地址,const将保证该地址上的内容不会被改变。这就意味着该函数不能作为左值使用,在这种情况下,const通常也是与引用和指针一起使用的。

类中的const
1. 常成员的函数
2. 常数据成员
3. 常对象
酿美甜7985
2011-09-22 · TA获得超过285个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:420万
展开全部
我来说一下,具体原因应该是这个,常变量在定义的时候必须初始化,所以当你在a.cpp中定义extern const double pi=3.14; b.pp中extern const double pi;可以通过编译运行。因为当编译系统发现a.cpp中的全局常变量时,就知道它pi是常量,而换过来的时候,在a.cpp中定义const double pi=3.14; b.pp中extern const double pi;编译系统在编译a.cpp是没有问题的,但到了b.cpp中就会发现,有一个外部常量是没有初始化的,而常量是不能在声明后再进行定义的,所以编译系统会认为找不到它的定义,所以就出错。
对于extern "C"主要是因为c和c++编译器不同,它们对相同的函数名编译后生成的相同的标示不同,故而在引用c的库文件时必须使用extern “C”告诉编译器,它是c的函数,按c的规则编译。通常我们使用的标准头文件已被处理过。 貌似没有用于常量的声明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2021-05-07 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

CONST:一个C语言的关键字

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御绿戎0EY
2017-06-22 · TA获得超过3.8万个赞
知道大有可为答主
回答量:2.7万
采纳率:38%
帮助的人:1317万
展开全部
返回const,则调用时也必须声明为const,防止返回的指针内容被修改。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c90b70b6b
2011-09-21 · TA获得超过130个赞
知道答主
回答量:91
采纳率:0%
帮助的人:68.1万
展开全部
const是引用的关键词,其实应用和指针的作用是差不多的,但是它比指针运行简单些,可以用在简单的变量运算,比如int&x,&y;int t=x,x=y,y=t;用引用比指针简单
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式