设为首页 加入收藏

TOP

C++:关于const类型
2014-03-10 12:53:43 来源: 作者: 【 】 浏览:113
Tags:关于 const 类型

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

  bool IsEmpty() const {return length;}

  LinearList& 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/C++取整函数ceil(),floor() 下一篇C++文件读写详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Libevent C++ 高并发 (2025-12-26 00:49:30)
·C++ dll 设计接口时 (2025-12-26 00:49:28)
·透彻理解 C 语言指针 (2025-12-26 00:22:52)
·C语言指针详解 (经典 (2025-12-26 00:22:49)
·C 指针 | 菜鸟教程 (2025-12-26 00:22:46)