首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于const的有关问题?30分

2012-02-04 
关于const的问题?30分在C++中这条语句externconstint&ri是一个声明还是定义,为什么?还有引用的时候不是必

关于const的问题?30分
在C++中     这条语句   extern   const   int   &ri;是一个声明还是定义,为什么?还有引用的时候不是必须要初始化,和一个对象绑定一下?

[解决办法]
定义嘛,
如果是const必须在定义的时候赋值,否则你就没机会赋值了
[解决办法]
具体可以参看我的BLOG,上面有关于CONST的用法
http://blog.csdn.net/caocheng8230/posts/1464574.aspx


const原则:在C++中最好趋向与使用const来修饰它前面的那个类型。
如:const int a;和int const b;中,虽然两种具有相同的意义,但是最好利用后面的那种情况,后面的更加可读,因为:int const我们可以很清楚地看到const是修饰int,而前面的那种方法中,我们就不那么轻易知道到底const 的具体涵义。由后面的那种方法我们可以知道const指一个恒定的整形。Int *const b,指的是一个恒定的指针b,这个指针指向一个整型,所以这个指针的内容可以改变,但是它的指针值也就是b的值不能变,相应的int const *b,指的是一个指向恒定整型内容的指针b,也就是说这个b的内容可以变,但是开始的b所指向的地址中的内容不能在程序当中通过b来改变。
volatile对上面的原则也适用。

[解决办法]
extern声明
关于const:
1。对于指针的讨论比较多
const int* p = &ci1;
p = &ci2;
这是指向一个const对象的指针,而p是个指针变量,可以指向ci1,也可以变指向的到ci2

把const写在*之后那就是个常量指针了,p是指针常量,定义时初始化,以后再不能改变指向了
int * const p = &i1;
p = &i2; //err

二者结合的情况
const int* const p = &ci3;

2。涉及typedef的情况
先说一种意见
定义常量可以 const int ci1 = 0;
可以 int const ci2 = 0;

typedef char* C;
const C p = &ch;
这个p是什么呢,是const char* p还是char* const p;
是后者,
原因:const C p中C是个类型,const是修饰p的

所以基于这点,个人建议写const量定义的时候,用int const ci2 = 0;的形式,显式说明const是修饰ci2的
所以,
typedef char* C;
C const p = &ch;

热点排行