【复读EffectiveC++03】条款03:尽可能使用const

本文详细探讨了C++中const关键字的用法,包括修饰变量、STL迭代器、函数参数和返回值,以及在面向对象中的类成员常量和函数中的应用。强调了const在提升代码健壮性和错误检测中的作用,以及const与mutable的区别和冲突处理策略。

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

条款03:尽可能使用const

   条款02讲完了,条款03就针对02中提到的 const 关键字进行了用法上进行了拓展解释。

const 关键字:只要一个变量前用const来修饰,就意味着该变量里的数据只能被访问,而不能被修改,也就是意味着“只读”。

   const 关键字主要包括了如下几个应用方面:
   a、const 修饰 变量;
   b、const 与 STL迭代器;
   c、const 在函数中的应用;

一、const 修饰 变量

   在这一部分,基本就是条款02中提及的常量用法,把一个变量通过const修饰的方式变成常量,这里的变量,其实要涵盖指针的,在我的理解里,指针其实也是变量,是int型用来存储指向对象地址的特殊变量。
   其重要的还是要记住怎么分析const修饰的作用域,经典的分析例子就是const修饰指针,就可以总结为:
   const 在星号左边,被 指针指向的变量 为常量;在星号右边,则此指针本身是常量(指针指向的变量依然为变量)
   这样的修饰方式在某些文章中,也又别称,前者叫顶层 const ,底层 const,虽然个人觉得前后更贴切。

  还有就是面向对象扩展出来的类成员常量。
  类成员常量,表示成员变量在某个对象生存期内是常量,即在对象生成时给出常量值。
  而在此对象生存期内,它的值是不能改变的,只能初始化,不能赋值。同一个类的不同对象,不同对象对应的常量数据成员的值可以不同。
  常量成员变量只能初始化,其值只能在构造函数中设定,甚至不能在构造函数的函数体中通过赋值设定,只能在构造函数初始化列表中完成

二、const 与 STL迭代器

   STL,是标准模板库的缩写,其中包含着六个主要部分,容器、算法、迭代器、仿函数、适配器和分配器;
   STL 迭代器系以指针为根据塑模出来,所以迭代器的作用就像个T*指针,也因此迭代器同样具有只读的需求和设计。

 std::vector<int> vec;
 const std::vector<int>::iterator iter1 = vec.begin();
 std::vector<int>::const_iterator iter2 = vec.begin();

一句话,按指针的用法来即可。

三、const 在函数中的应用

  const在原来c语言函数中的应用,就是对函数进行只读限制,防止一些函数编写者不希望出现的变化。
  但本书讨论的是c++,其讨论的部分就要考虑两个部分:改版C语言的一般函数部分 和 面向对象扩展的特殊函数(成员函数)部分。

1、一般函数应用

  在一个一般函数里可以被const修饰的就两个部分:返回值和参数。
  const修饰返回值,也就是调用函数的结果不希望被修改:

const int Fun(int i_iValue)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值