一、const的基础如果const关键字不涉及指针,我们就很好理解了。下面是涉及指针的情况:intb=500;constint*a=&b;[1]intconst*a=&b;[2]int*consta=&b;[3]constint*consta=&b;[4]如果你能分清以上四种情况,那么,恭喜你,你迈出了可喜的一步。不知道,没关系,可以参考《Effective c++》第21条的做法,如果const位于星号左边,那么const就是用来修饰指针指向的变量,也就是说,指针指向一个常量;如果const位于星号的左边,const就是修饰指针本身,即指针本身是一个常量。所以,[1]和[2]的情况是一样的,指针指向的内容是一个常量(const在变量声明符中的位置无关紧要),在这种情况下,不允许改变内容,比如not*a=3;[3]表示指针本身是常量,但是指针指向的内容不是常量。在这种情况下,指针本身是不能改变的,比如a++就是错误的;[4]表示指针本身和指向的内容都是常量。const的另一个强大功能在于它在函数声明中的使用。在函数声明中,const可以修饰函数的返回值,或者参数;对于成员函数,它还可以修改整个函数。有以下几种情况,下面会逐步讲解用法:第二个const的初始化先来看const变量的初始化1)非指针const常量的初始化:Ab;常数Aa=b;2)指针(引用)const常量的初始化:A*d=newA();constA*c=d;或者:constA*c=newA();Quote:Af;constA&e=f;//这样e只能访问声明为const的函数,不能访问一般的成员函数;【思考1】:下面的赋值方式是否正确?constA*c=newA();A*e=c;【思考2】:下面的赋值方式是否正确?A*constc=newA();A*b=c;
