c++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某个值是保持不变的。如果编程中确实某个值保持不变,就应该明确使用const,这样能获得编译器的帮助。
const修饰函数参数
传递过来的参数在函数内不可以改变。
void testModifyConst(const int _x) { _x=5; //编译出错}const 修饰成员函数
(1)、const修饰的成员函数不能修改任何成员变量(mutable修饰除外) (2)、const成员函数不能调用非const成员函数。
/#include <iostream>using namespace std;class Point{public :Point(int _x):x(_x){}void testConstFunction(int _x) const{ //错误,在const成员函数中,不能修改任何类成员变量 x=_x; //错误,const成员函数不能调用非onst成员函数,因为非const成员函数可以会修改成员变量 modify_x(_x);}void modify_x(int _x){ x=_x;}int x;};修饰成员变量 using namespace std;int main(){ int a1=3; ///non-const data const int a2=a1; ///const data int * a3 = &a1; ///non-const data,non-const pointer const int * a4 = &a1; ///const data,non-const pointer int * const a5 = &a1; ///non-const data,const pointer int const * const a6 = &a1; ///const data,const pointer const int * const a7 = &a1; ///const data,const pointer return 0;}(1)只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。 (2)只有一个const,如果const位于*右侧,表示指针本身是常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。 (3)两个const,*左右各一个,表示指针和指针所指数据都不能修改。 - 参考 http://www.cnblogs.com/xudong-bupt/p/3509567.html
新闻热点
疑难解答
图片精选