看effective c++第二版推荐使用const,少用define。今天才发现发现这远远不够。

#define定义的常量在预处理替换,debug的时候无法打印宏的,这种常量设置是有缺陷的, const定义常量作用在编译时期,就是说编译器帮你检查有没有对const做修改,那么怎么实现一个运行时常量,目前c++中还没有提供改语法。所以const只是个协议。库提供者和使用者之间的协议,开发者和编译器的协议。所以有了const_static可以消除const的协议

开发者和编译器的协议:

const对象的内容,在运行时起是可以修改的。通过这个协议,编译器可以发现你代码中的一些隐形错误,就是让编译器来帮你找错

库提供者和使用者之间的协议

如果一个函数的参数是const类型的指针(const char *),那么表示它不会释放该指针的内容,为了防止内存泄漏,需要你自己管理指针的释放,

如果一个函数的参数不是const类型的指针( char *),那么表示该参数可能作为输出,可能修改内容,这个时候对传入的值要做备份,传出的值复制到别的数组中。内存的管理要仔细看函数说明

int PyArg_ParseTuple(PyObject *args, const char *format, ...)  该方法用来读取python对象的值,当args销毁的的时候也会把读取的值销毁。所以读取后马上备份

最新文章

  1. 【leetcode】Valid Palindrome
  2. SQL Server在哪里存放DMV的数据?
  3. 【swift学习笔记】一.页面转跳的条件判断和传值
  4. 实战Nginx与PHP(FastCGI)的安装、配置与优化
  5. SQLite中的日期基础
  6. bash/shell 数学计算
  7. phpcms v9后台多表查询分页代码
  8. MD中bitmap源代码分析--数据结构
  9. 使用python发邮件
  10. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
  11. Redis可视化工具安装及常用操作操作
  12. java上传文件获取跟目录的办法
  13. java中继承和多态的理解
  14. 小Q系列故事——屌丝的逆袭
  15. Kafka:Configured broker.id 2 doesn't match stored broker.id 0 in meta.properties.
  16. Codeforces Round #544 (Div. 3) dp + 双指针
  17. 发邮件、排序、FIFO
  18. 数据仓库基础(二)ETL
  19. JavaScript模块化与esl.js
  20. IOS之TableViewCell重用机制避免重复显示问题

热门文章

  1. python中返回函数
  2. GAN基础
  3. java深入探究06
  4. Android 基础-3.0 数据存储方式
  5. SQLite connection strings
  6. SetOperations
  7. Linux下开放防火墙端口
  8. POJ 1504,ZOJ 2001,UVA 713, Adding Reversed Numbers,错误,已找到错误
  9. php 实现分享到QQ空间 新浪微博
  10. (转)Java 调用 C++ (Java 调用 dll)