`
浪淘猪
  • 浏览: 43968 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

const 关键字的作用

 
阅读更多

被面试者只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?

Const只是一个修饰符,不管怎么样a仍然是一个int型的变量

本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效

 

const int a;

int const a;      //前两个的作用是一样,a是一个常整型数。

const int *a;     //意味着a是一个指向常整型数的指针(也就是,指向的整型数是不可修改的,但指针可以,此最常见于函数的参数,当你只引用传进来指针所指向的值时应该加上const修饰符,程序中修改编译就不通过,可以减少程序的bug)。

int * const a;     //意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。

int const * a const;   //意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

 

 

顺带提一句,也许你可能会问,即使不用关键字 ,也还是能很容易写出功能正确的程序,那么为什么还要如此看重关键字const呢?理由如下:

1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)

2) 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码

3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

 

const关键字至少有下列n个作用:

1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了
2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const
3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为左值。例如:
const classA operator*(const classA& a1,const classA& a2); 
  operator*的返回结果必须是一个const对象。如果不是,这样的变态代码也不会编译出错:
classA a, b, c;
(a * b) = c; // 
a*b的结果赋值 
  操作(a * b) = c显然不符合编程者的初衷,也没有任何意义。

分享到:
评论

相关推荐

    C++const关键字详解

    C++中const关键字详解

    const关键字使用总结

    关于C/C++中的const关键字的用法,你了解多少呢?

    C++中const关键字用法详解及实例和源码下载

    现在读到了const关键字的用法,书上面讲解的时候并没有给出完整的实例,只是理论的讲解了一些知识,后来在网上面搜了关于const的关键字的讲解,但是搜到的内容和书上面讲解的内容有着非常让人疑惑的东西,看看下面的...

    const关键字详解

    关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性

    c++中const关键字使用详解

    一 const基础;二 const的初始化;三 作为参数和返回值的const修饰符;四 类成员函数中const的使用;五 使用const的一些建议。

    volatile关键字 Const关键字 static关键字 mutable 关键字

    C/C++ 嵌入式 一些关键字: volatile关键字 Const关键字 static关键字 mutable 关键字

    C++中const关键字详解

    C++中const关键字详解

    游戏效率优化(2) 使用const关键字1

    游戏效率优化(2) 使用const关键字1

    详解C语言中const关键字的用法

    关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定...

    浅析c++ 中const关键字

    另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 define与const的区别 1.define作用在预处理时,是简单地字符替换 2. const作用在编译时,具有类型检查的功能 3. const必须...

    理解PHP5中static和const关键字的区别

    我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助。 (1) static static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不...

    C++语言const 关键字使用方法图文详解

    const关键字 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。不管出现在任何上下文都是为这个目的而服务的。 const使用方法 定义const对象 const修饰符可以把对象转变成常数对象...

    php中static和const关键字用法分析

    主要介绍了php中static和const关键字用法,结合实例形式分析了static和const关键字的功能、使用方法与相关注意事项,需要的朋友可以参考下

    C/C++ 中const关键字的用法小结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性。 Const作用 NO. 作用 说明 参考 1 可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量...

    详解C/C++中const关键字的用法及其与宏常量的比较

    简单的说const关键字修饰的变量具有常属性,也就是说它所修饰的变量不能被修改,下文给大家介绍C/C++中const关键字的用法及其与宏常量的比较,需要的朋友可以参考下

    C++编程中的const关键字常见用法总结

    这篇文章主要介绍了C++编程中的const关键字常见用法总结,const关键字的使用是C++入门学习中的基础知识,需要的朋友可以参考下。

    总结C语言中const关键字的使用

    const关键字使用非常的灵活,这一点和php差别很大,php中const用来在类中定义一个常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起来也是非常的灵活。 (1):const用来修饰普通的变量...

Global site tag (gtag.js) - Google Analytics