电子商务网站建设目标分析,国内优秀app界面设计案例,潍坊做网站的,外贸电商网站制作1、尽量用const enum inline替换#define
因为#define是做预处理操作#xff0c;编译器从未看见该常量#xff0c;编译器刚开始编译#xff0c;它就被预处理器移走了#xff0c;而#define的本质就是做替换#xff0c;它可能从来未进入记号表
解决方法是用常量替换宏
语言…1、尽量用const enum inline替换#define
因为#define是做预处理操作编译器从未看见该常量编译器刚开始编译它就被预处理器移走了而#define的本质就是做替换它可能从来未进入记号表
解决方法是用常量替换宏
语言常量会被编译器看到会进入记号表内
#define不注重域的范围而const可以#define不能定义类常量也不能提供封装性比如private等
用#define定义“函数”问题会非常大
int a 5, b 0;
#define CALL_WITH_MAX(a, b) f((a) (b) ? (a) : (b))
如果调用CALL_WITH_MAX(a, b); //a会累计加两次(a) (b) ? (a) : (b);
因为a b所以使用a的值三目运算符
如果调用CALL_WITH_MAX(a, b 10);就会累计加一次因为a b了所以取值b之加了一次
在迭代器中若迭代器不做值修改那么可以用const_iterator以此提高性能
例如
const std::vectorint::iterator iter vec.begin();//iter的作用类似于T* const
*iter 10;//正确
iter;//错误
std::vectorint::const_iterator citer vec.begin();//iter的作用类似于const T*
*citer 10;//错误
citer;//正确
const加在返回值身上
const Rational operator* (const Rational lhs, const Rational rhs);
如果不加那么我可以写成Rational a, b, c;
(a * b) c;//而a*b返回的是一个右值