【总结】const关键字的用法及作用

在C语言和C++中,我们都会用到const,并且对于static有不同的用法和作用。下来我将就C语言和C++两个不同的编译环境分别对const的用法和作用进行讲述。

1、在C语言中const的使用

(1)const修饰的变量称为常变量。此时它不能作为左值。

(2)不能定义数组大小

(3)其他性质和普通变量一样。

eg:    

    const int a = 10;
    int *p = (int *)&a;
    *p = 20;
    printf("%d\n",a);//此时a的值被修改为20;

2、在C++中const的使用

(1)把加了const的变量称为常量

(2)C++中const的处理机制:在编译阶段把所有用到const常量的地方全部替换成常量的初始化值。

(3)必须初始化。如果不初始化无法进行替换

(4)能定义数组大小

(5)杜绝间接访问来修改常量内存的风险。也就是说不能有被修改的风险,如果有编译不通过。

注意:const int *p 和int * const p是有很大区别的。

           const int *p中const修饰的是*p;

           int * const p中const修饰的是p;

(6)const可以修饰成员方法,成为常成员方法。在常成员方法中只能访问其他成员,不能修改其他成员;普通对象和常对象都可以调用常方法,但是常对象只能调用常方法。

(7)const可以修饰成员变量,成为常成员变量,因此他们的初始化必须写在构造函数的初始化列表当中,否者编译会报错。

注意:C++中const修饰的变量也可以是常变量(和C语言中一样)。代码如下:

          int b = 10;
                 const int a = b;
                 int *p = (int *)&a;
                 *p = 20;
                 std::cout<<a<<std::endl;//此时a被修改为20。

发布了20 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ifiwere/article/details/104486152