C和C++中const的用法区别

  1. 在C中,const常用来修饰一个变量,表示该变量为常量,它的值无法在程序运行期间修改;
  2. 在C++中,const有所拓展,除了用于修饰变量,还可以用于修饰函数参数、函数返回值和类成员函数等。比如修饰函数参数的时候,根据有无const可以判别为重载;修饰this指针表示调用该类成员函数的对象指针需要是const类型的。
  3. 更重要的一点是,C中的const修饰变量以后,其性质是运行时常量。意思就是说只提供运行时的常量性,编译期间并不保证,所以我们是可以通过地址的方式直接改变其值。但是在C++中就比较严格,称为编译时常量,也就是说从编译期间就无法去用地址的方式修改变量的值。

这个具体的实现方法是:C中如果用const修饰一个变量,如果你在编译期间对其进行修改,编译器会进行检查,并且能够检查出来,但是只会进行警告,并不会阻止程序的运行。而C++中则是直接将初始化的值直接嵌入到生成的机器码中(这是一种优化方式),就相当于所有用到该常量的地方已经全部被定义成某个值了,这样的话常量的值在编译期间就已经确定下来了。

  1. 还有一点就是,C中的const常量具有外部链接属性,C++中的具有内部属性。指的是C中的const修饰的变量只需要在其他源文件声明extern即可访问。而C++中的const修饰常量默认是无法被其他文件访问的,必须在本文件内将其定义为外部属性,也就是定义为extern才可以让其他文件访问到。

你可能感兴趣的:(C++面经,c语言,c++)