Effective C++之const使用

1.条款之const,enum,inline代替宏定义

#include <iostream>
using namespace std;

const int a = 5;
const int b = 6;

enum{
   i,
   j
};

template <typename T>
inline int callwithMax(const T&a ,const T&b)
{
    return (a>b?a:b);
}

int main(int argc,char *agcv[])
{
   int c= 2;
 //  c=callwithMax(a,b);   //result 6
   c=allwithMax(i,j);      //result 1
   printf("%d",c);
   return 0;
}

使用此规则,是因为const,enum所使用的名称会进入记号表,而宏定义的名称可能进不去。使用inline代替宏定义,提供了类型安全性。

2.条款之尽可能使用const
(1)const的使用

#include <iostream>
using namespace std;
int main(int argc,char *agcv[])
{
   int d = 4;
   int *const e = &d;
   int f = 0;
   int const *g = &f;
   int c= 2;
  // *e = 5;   这是对的
  // e = &f;   这是错的,指针为常量不可赋值
  // g = 5;    这是错的,值为常量不可赋值
     g = &d;   //这是对  
}

(2)const_iterator 和 const 迭代器的区别

#include <iostream>
#include <vector>
using namespace std;

int main(int argc,char *argv[])
{
  vector<int> vec;

  const vector<int>::iterator iter = vec.begin();
  *iter = 10;   //正确
  //++iter;   错误,对指针操作
  vector<int>::const_iterator iter2 = vec.begin();
  //*iter = 10;  错误,对值操作
  ++iter2;   //正确
  return 0;
}

参考文献《Effective C++》作者 Scott Meyers 翻译 候捷

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值