• 1.尽量以const ,enum,inline替换define


    1.#define为预处理阶段命令

    原因:有可能记号名称没有进入记号表,而出现编译错误,即编译器并没看到过该定义。

    class专属常量const 一般定义为static,保证该常量至多有一份实体。

    枚举类型值可充当intS型使用。enum{num=3};现在num就是3的一个记号。

    对于取地址操作:const是合法的,但是enum和define不能进行取地址操作。

    #define定义函数宏的时候容易产生歧义。(括号分配等等,计算顺序。。)

    宏无法定义成private,但是内联函数inline可以定义成private inline。

    总结:对于单纯常量,做好以const,enum代替#define

    对于函数类型的宏定义,最好通过inline替代,因为内联函数可以很好地遵守作用域和访问规则。

    2。尽量在定义不变常量的时候用const.编译器会帮助强制执行这项约束。const可以用来修饰:常量(全局,局部),函数,文件,区块作用域中的static对象,指针等。。

    const修饰指针:const在*左边,表示被指物是常量,const出现在*右边,表示指针自身是常量。也可出现在*两边。

    左边:const char*ptr;等价于char const*ptr;常量指针,指向常量的指针。

    右边:指针常量,指向的那块东西不能变,但是东西的值是可以变的。

    常量const修饰函数:函数返回值为常量是可以避免用户操作错误而造成的意外。

    const成员函数:方便调用const变量。常量性不同的两个函数是可以被重载的,即是否有const修饰的两个函数,是不同的,类似于重载操作。

                const char& operator[](size_t p)const{...}

                char& operator[](size_t p2){..}

                 重载的两个不同的函数。。

    注意:当const与non-const成员函数有着本质相同的实现时(有一些重复的操作),用NON-CONST去调用const版本的函数可以避免代码重复。原因是const承诺不改变对象的逻辑状态,但是当你用const去调用非const的时候,非const并没承诺不改变对象的逻辑状态,这就造成错误。

  • 相关阅读:
    d2admin框架学习
    手机访问本地配置域名下的项目
    laydate 限制结束日期不能大于起始日期
    学习MVC之租房网站(十一)-定时任务和云存储
    学习MVC之租房网站(十)-预约和跟单
    学习MVC之租房网站(九)-房源显示和搜索
    学习MVC之租房网站(八)- 前台注册和登录
    学习MVC之租房网站(七)-房源管理和配图上传
    《程序员修炼之道》笔记(九)
    《程序员修炼之道》笔记(八)
  • 原文地址:https://www.cnblogs.com/8335IT/p/6662975.html
Copyright © 2020-2023  润新知