|
发表于 2012-7-20 08:45:21
|
显示全部楼层
原则上说,const修饰什么,什么就不能变。
如:
1.const int a=5;
这里const修饰int,所以这个int的值初始化后就不能变。
2.int*const pa = NULL;
这里const修饰*,就是修饰指针的意思,所以这个指针的值在初始化后就不能变。
3.const int*const p = ...;
这里后面的const修饰*,所以指针初始化后,值不能变(不能再指向其它对象)
前面的const修饰int,所以不能通过该指针改变其指向数据的值
利用上面的知识:
对于const A* const func(const A* const one)
1.其中函数的参数const A* const one
这个类型中后面的const是修饰*的(修饰指针),所以在函数内不能修改指针的值(不能指向其它对象)
前面的const是修饰A的,就是说在这个函数里不能通过指针one来修改它所指向的数据(不能调用A类的非const成员函数)
2.其中函数的返回值const A* const
这个类型中后面的const是修饰*的(修饰指针),所以不能修改返回的指针值(不能指向其它对象)
前面的const是修饰A的,就是说不能通过返回的指针来修改它所指向的数据(不能调用A类的非const成员函数) |
|