Effective C++笔记第一部分:让自己习惯C++

1、define和const的区别

       (1)、define是预处理命令,是在预处理阶段展开,而const是在编译阶段。

       (2)、无法用define创建一个类的专属长廊,因为define并不重视作用域,一旦宏被定义,它就在其后的编译过程中有效,除非在某处被undef,即define不能提供任何封装性。

       (3)、类中的常量可以用static const int来表示,也可以用enum{Number=20};来表示,但不能用define,enum是不占据内存空间的,类似于define。

       (4)、用define定义的函数,可以用inline来实现

       (5)、define展开常常会出现意想不到的问题,如:

#define multi(a,b) a*b;

inta=multi(3+4,5+6) //a的结果是293+4*5+6

2、const和迭代器

         const vector<int>::iterator iter=vec.begin();//相当于T*const

         *iter=10;

         ++iter; //错误iter的指向不能变

 

         vector<int>::const_iteratorcIter=vec.begin();//相当于constT*

         *cIter=10; //错误,cIter所指对象不能变

         ++cIter;

构造函数和析构函数是不能声明 const !!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值