const的作用体现在不可修改特性上。对普通变量直接进行const修饰,意为表示常量,表明该变量不可更改。
该常量用于标志一些固定的参数,便于解释其意义。与简单常量使用方式一致,便于编译器进行类型检查。修改const变量使编译器对处理内容有更多了解,消除潜在隐患。编译器会判定const变量i不能被更改。
在函数层面,const用于表示形参在函数内部不能被改变。用于修饰函数的返回值时,若函数返回值为对象的引用,不加const,则可能因直接通过返回的引用修改引用对象的值。特别是面向对象编程中,容易发生实例属性误改。
针对成员函数而言,const置于函数体前和参数列表之后,其含义是该成员函数不会修改成员变量。涉及指针操作时,情况稍显复杂,分为两部分主要情况。
一类是修饰指针所指向的变量,该状态下,指针指向的地址可调整,但指向的变量不能通过该指针被修改。也就是说,`const`修饰的是`*p`,但指针`p`本身可变。通过`->`进行成员变量修改在此不被允许。在实例代码中体现这一点。
另一类是直接修饰指针变量,此时指向的变量值可变,而指针的地址本身不可变。`const`在此修饰`p`本身,限定`p`的值不能改动,而对应地址上所存内容不受该`const`限制。同样基于实例代码解释。
对const指针的总结为:判断const修饰的是`*p`还是`p`的决定性因素在于`const`和`*`的位置。位于`*`前表示`const`作用于`*p`,而`*`后表示`const`针对`p`本身。
温馨提示:答案为网友推荐,仅供参考