微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > C++中const与指针、引用的分析

C++中const与指针、引用的分析

时间:12-01 来源:互联网 点击:

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的指针或者引用就能避免原始数据修改。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top