Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239389
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-09-15 19:51:09

1.与define的区别
在c中const的定义是全局的,在c++中则是内部连接
define则是全局的
const#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、一个命令中的参数,没有实际的存在。
在c++中推荐用const取代#define
 
2.与c中const的区别及c++中不同位置const的性质
在c中const的意思是“一个不能被改变的普通变量”,在c中,它总是占有存储而且它的名字是全局符,c编译器不能把const看成是一个编译期间的常量。
c++中是否为const分配空间视情况而定,对于复杂的结构,编译器是会建立存储的,在这种情况下const意味着“不能改变的一块存储”。
 
3.常指针及指向常量的指针
常指针,指针本身是一个const,不能改变:int* const x
指向常量的指针,指针所指向的内容是不可更改的:int const* x(x是一个指针,它指向一个const int)
可以将“非常量”赋值给“常量”,反之是不可以的。
 
4.函数中的const
传递const:参数不能被改变,它其实是函数创建者的工具,而不是函数调用者的工具。
返回值const:对于内部数据类型来说,这种结构没有什么作用。但是对于处理用户定义类型时,返回值为常量是十分必要的。如果一个函数返回一个类对象的值,其值为常量,那么这个函数的返回值不能是一个左值(即它不能被赋值也不能被修改)。
 
5.类中的const
在一个类里const的意义是:在这个对象寿命期内,这是一个常量,然而对于这个常量来说,每个不同的对象可以含一个不同的值。因为在类的对象中进行了存储空间的分配,编译器不能知道const的内容是什么,这意味着对于类里的常数表达式来说,const就像在c中一样没有作用。这时候可以使用enum,enum是不会占用对象中的存储空间的
 
6.const对象
const对象可以实现一种只读存储的能力
   a.const对象只能访问const成员函数,而非const对象可以访问任意
    
的成员函数,包括const成员函数.
   b.const
对象的成员是不可修改的,然而const对象通过指针维护的对象却
    
是可以修改的.
   c.const
成员函数不可以修改对象的数据,不管对象是否具有const性质.它在
    
编译时,以是否修改成员数据为依据,进行检查.
   d.
然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段
    
都可修改,自然此时的const成员函数是可以修改它的
 
 
 
 
阅读(525) | 评论(0) | 转发(0) |
0

上一篇:[c++]输入输出流

下一篇:[c++] incline函数

给主人留下些什么吧!~~