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的结果是29即3+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 的!!