C++:关于const类型

在看“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。


第三个问题还在思考。

C++:关于const类型,布布扣,bubuko.com

C++:关于const类型

上一篇:C语言小贴士之数据类型和变量定义


下一篇:C语言小贴士之数组