当前位置: 首页 > news >正文

改善程序与设计的N个做法

经验往往包含着珍贵的学问。

 

1、尽量用const、enum、inline替换#define

对于简单常量,使用 const 代替宏定义,其优点:const 常量能够出现在符号表中,方便调试。宏定义因为进行的宏替换,有时候会造成代码冗余,const 常量能够很好的避免这个问题。const 常量可以作为类属成员,#define 则毫无封装性。整型族类属常量可以在类中声明时直接初始化。

enum 也可以作为整型常量使用,并且无法取得其地址。

使用内联函数代替宏定义的函数将会在不损失效率的情况下降低发生错误的可能性

2、尽可能的使用const

(1)const允许你指定一个语义约束,即你可以指定一个不能被改动的对象,交由编译器具体执行,使得这条约束不被违反。

char name[] = "marry";

const char* p = name;   //指针所指的数据是常量,不能通过解引用修改数值,但可以改变指向

char * const p = name;        //指针是常量,指向不可变,可通过解引用修改指针所指向的数据

const char* const p = name;    //指针和数据都是常量,都不可更改

(2)const修饰函数参数时,传递过来的参数在函数体内不可以改变

void fun(const int  age)

{

        age = 6;    //编译出错

}

(3)除了重载操作符外,一般不要将返回值类型定义为对某个对象的const引用。

(4)const成员函数

作用是确认那个函数可以修改对象内容,哪个函数不能修改对象内容;另外,const成员函数使操作const对象成为可能。 

相关文章:

  • C++数据结构之顺序表
  • C++数据结构之单链表
  • (8)STL算法之替换
  • (9)STL算法之逆转旋转
  • NFS安装使用
  • STL之map(关联式容器)
  • STL之unordered_map
  • 动态规划
  • 算法分析
  • 编写一个函数,实现将char类型的字符串,循环右移n个位置
  • 类构造、析构、赋值函数示例
  • 数组指针指针数组
  • LeeCode 20.有效的括号
  • LeeCode 26 删除排序数组中的重复项,返回数组新长度
  • LeeCode 27 移除元素,返回数组新长度
  • ----------
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Java 最常见的 200+ 面试题:面试必备
  • Java的Interrupt与线程中断
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Making An Indicator With Pure CSS
  • Mithril.js 入门介绍
  • Netty源码解析1-Buffer
  • php中curl和soap方式请求服务超时问题
  • React Native移动开发实战-3-实现页面间的数据传递
  • Vim Clutch | 面向脚踏板编程……
  • Vue--数据传输
  • vue自定义指令实现v-tap插件
  • 测试开发系类之接口自动化测试
  • 分布式事物理论与实践
  • 简单实现一个textarea自适应高度
  • 理清楚Vue的结构
  • 马上搞懂 GeoJSON
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 三栏布局总结
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • ​2020 年大前端技术趋势解读
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #考研#计算机文化知识1(局域网及网络互联)
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一) springboot详细介绍
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)C#调用WebService 基础
  • (转)fock函数详解
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET大文件上传知识整理
  • .net流程开发平台的一些难点(1)