C++中const的实现机制深入分析
C语言及C++中的const
简单分析
在C语言中,const
表示只读的变量。而在C++中,const
表示常量。
实现机制
C语言const示例
const int i = 10;
int *p = (int *)(&i);
*p = 20;
printf("i=%d *p=%d \n", i, *p);
C++语言const示例1
const int i = 10;
int *p = const_cast<int*>(&i);
*p = 20;
cout << "i=" << i << " *p=" << *p << endl;
C++语言const示例2
struct test {
int j;
char tmp;
test() {
j = 30;
tmp = 'a';
}
};
int main(int argc, char* argv[]) {
const struct test t1;
int *q = (int *)(&t1.j);
*q = 40;
cout << "j=" << t1.j << " *q=" << *q << endl;
return 0;
}
示例结果分析
问题1
在C语言中,通过指针修改const int
的值后,i变成了20;而在C++中,通过指针修改了值后,i仍然是10。
问题2
在C++中,const struct test
的元素j通过指针被改变了,为何const int
与const struct test
的反应机制不同?
小结
C语言与C++有很多的区别与联系。对于const的理解和使用是编程的基础,需要熟练掌握。