C++:关于const类型

本文探讨了C++中const成员函数的作用及其限制,并解释了如何通过const参数扩大函数的应用范围,同时分析了不同场景下const修饰符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在看“Data Structures,Algorithms,and applications in C++”时,一个类中写了如下几个函数,让我如此混乱:

bool IsEmpty() const {return length;}

LinearList<T>& Insert(int k, const T& x);

void Output(ostream& out)const;

让我思考不清的问题是:

一,第一和第三个函数的parameter list后面加的const是为了说明member function是const member function。加了const有什么用?这里能不能不加?

二,这几个函数的parameter中,有的parameter是const,有的不是,那么为什么是“const T& x”?可不可以去掉const?

三,函数的返回类型都不是const类型,都是plain类型。函数类型如果是const,说明什么?


于是,我对照C++ primer 5th edition中各个地方的const讲解做了理解。

第一个问题(参考材料:C++ primer 5th edition7.1.2节):const member function是为了对member function中的隐藏parameter(“this”)的类型做出说明(因为对于隐藏的this参数不能像其他在parameter list中的patameter一样直接给出类型说明)。

  声明是const member function后,带来的作用是:扩大了可以调用这个member function的类的范围,从只能是plain class(not const)到既可以是plain也可以是const的类都可以调用;

  另一个作用是不能用这个member function做出任何改变调用这个function的class的操作。


第二个问题(参考材料:C++ primer 5th edition6.2.3节):如果parameter声明为const,则传入的argument既可以是const也可以是nonconst;但如果parameter声明不带const,则传入的argument只能是nonconst(也就是将paramter声明为const扩大了应用范围)。

但是将参数声明为const带来的效果是不能在这个函数中改变声明为const的parameter。


第三个问题还在思考。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值