const用法详解
今天上网上看看,发现很多校园招聘。想起了去年的这时候和兄弟们刚从河南少林回来。然后就是几次笔试。由于那时还自视清高就投了几个公司,里面几家公司好像都考const的用法了。真是无语啊,那时考的,现在才大概明白了。人懒了没办法啊,废话不多说开始我们的const之旅。首先const来自英语单词constant,就是不变的意思。说来简单,用起来就各种纠结了。
先从正常的定义常量说起吧,在c++里const相当于c里的#define定义。所以在申明的时候要初始化,不然会报错。const纠结就纠结在它放在不同的位置。现举例说明。
int year = 2010;
const int *mouth = &year;
int const *hour = &year;
int * const minite = &year;
const int* const second =&year;
它们之间有什么区别,是不是看晕了,呵呵。很正常,我当时也晕了,想想这出题的人真讨厌。其实发现窍门是很容易理解的。把前面的类型去掉,好了,现在一目了然了吧。第一个是说*mouth这个变量不能改变,而指针mouth可以改变的。第一个其实和第一个一样,不仔细看容易和第三个混淆,第三个也很简单,解引用值可以变,但是指针不可变。刚开始我理解成指针指向year了。然后变不变都考虑year这个变量。这样导致mouth和year特别混乱。其实只要 看前面的变量,就一切很明白了。
说完常用的变量然后来看类里面成员函数的应用。我直接举例子了,然后解释说明了。
其实对上面定义常量明白理解了,函数里就多了一个成员函数const的用法,这里强调一点的是,申明和定义都要把const带上。他们是一个整体。要是想改变const的话就用const_cast强转。就是平常传递参数的话,如果在函数里不想改变值的话,尽量加上const关键字,提高代码的健壮性,防止不知什么时候值被改变了,尤其是在传递引用的时候。
就写到这里,c++的细节东西好多啊。