C++中const与指针、引用的分析
cout < "Before change..." < endl;
cout < "The num of num = " < num < endl;
cout < "pnum = " < pnum < " "
< "cpnum = " < cpnum < " "
< "csize1 = " < csize1 < endl;
num = 30;
cout < "After the first changed..." < endl;
cout < "The num of num = " < num < endl;
cout < "pnum = " < pnum < " "
< "cpnum = " < cpnum < " "
< "csize1 = " < csize1 < endl;
/*通过引用修改变量的值*/
pnum = 40;
cout < "After the second changed..." < endl;
cout < "The num of num = " < num < endl;
cout < "pnum = " < pnum < " "
< "cpnum = " < cpnum < " "
< "csize1 = " < csize1 < endl;
/*不能采用const的引用修改对象,
*这与指向const的指针特性的相似处*/
/*
csize1 = 50;
cout < "After the second changed..." < endl;
cout < "The num of num = " < num < endl;
cout < "pnum = " < pnum < " "
< "cpnum = " < cpnum < " "
< "csize1 = " < csize1 < endl;
*/
double dnum = 10.1;
/*非const的引用只能绑定相同类型的对象*/
//int &dname = dnum;
/******************************************
*const引用可以绑定不同类型的对象,
*因此const引用就能更加方便的作为函数的形参
*******************************************/
const int &dothername = dnum;
return 0;
}
上面的实验结果基本上符合分析的结论。
总结
const的使得引用与指针的变化更加复杂,总体而言,const主要是保证了通过指针或者引用不修改原始的数据,但是至于原始的数据是否可以修改,这就需要参看数据的类型。
在存在const的对象中,只能采用包含限定符const的引用或者指向const的指针来操作。
const的引用比较强大,初始化的过程中可以采用任意的对象,const对象,非const对象,甚至其他类型的数据。const引用支持隐式类型转换。而指向const的指针则不能,只能指向同一类型的数据,但是可以采用强制类型转换,初始化或者赋值过程中对数据类型没有要求,可以是const对象的地址,也可以是非const对象的地址。
const引用和指向const对象的指针都是自己以为自己指向的对象是不能修改的,采用const的指针或者引用就能避免原始数据修改。
C++const指针引 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)