恐龙指挥官无限金币
68.49MB · 2025-11-12
全局const常变量来代替,如#define PI 3.14 ==> int const Pi = 3.14,是该定义(包括指针常量)是可以出现在头文件的,因为此时变量没有共享性,但是如果又有extern修饰,就具有共享性,不能违反单一定义原则#define定义的常量,则可以使用static const int n = 10;来代替,可以不在外面重新定义,此时编译器会把n作为编译时常量来对待,即可用于声明数组个数const A a;,对象a直接访问非mutable成员数据修改或调用成员方法修改,都是不行的const vector<int>::iterator iter = vec.begin(),声明iter本身是不变的,const_iterator iter是声明iter指向的对象不可变化operator*()最好返回const,避免用户代码if((a*b)=c)mutable数据成员的mutable修饰的成员local static object是指函数中声明定义的static变量,会在程序启动时就在数据区分配空间,初次运行到定义处进行初始化,线程安全non-local static object,包含全局static、类中static以及命名空间内的static,在main运行前初始化,但是存在跨编译单元初始化顺序不确定问题,解决方案是用local static替换non-local static