const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。
const Date* const this; 第一个const表示指向空间的内容不能修改,第二个const表示指针本身的内容不能修改。
1.修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用下文讨论的“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能。const 只能修饰输入参数。 修饰指针传递的参数:
char * strcpy(char * strDest,const char * strSrc);strSrc不能被修改。 2.修饰函数的返回值
class A { A & operate = (const A & other); // 赋值函数 } ; A a, b, c; // a, b, c 为A 的对象 a = b = c; // 正常的链式赋值 (a = b) = c; // 不正常的链式赋值,但合法将赋值函数的返回值加const 修饰,那么该返回值的内容不允许被改动。上例中,语句 a = b = c 仍然正确,但是语句 (a = b) = c 则是非法的。 3.修饰成员函数
void Func() const { }表示这个函数是一个“只读函数”,函数不能改变类对象的状态,不能改变对象的成员变量的值。
问题: 1.const对象可以调用非const成员函数吗?--------->不能 2.非const对象可以调用const成员函数吗?--------->可以 3.const成员函数内可以调用其他的非const成员函数吗?--------->不能 4.非const成员函数可以调用其他的const成员函数吗? --------->可以