【详解】const(参数、返回值、成员函数)

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成员函数吗? --------->可以

结论:普通对象可以调用const成员函数,做到只读但不修改;const不能调用普通成员函数,做不到修改变量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值