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

来源:互联网 发布:上海哪家java培训机构 编辑:程序博客网 时间:2024/06/13 11:20

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
原创粉丝点击