c++中的const关键字的理解
2024-08-26 17:20:51
看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销毁的的时候也会把读取的值销毁。所以读取后马上备份
最新文章
- 【leetcode】Valid Palindrome
- SQL Server在哪里存放DMV的数据?
- 【swift学习笔记】一.页面转跳的条件判断和传值
- 实战Nginx与PHP(FastCGI)的安装、配置与优化
- SQLite中的日期基础
- bash/shell 数学计算
- phpcms v9后台多表查询分页代码
- MD中bitmap源代码分析--数据结构
- 使用python发邮件
- 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
- Redis可视化工具安装及常用操作操作
- java上传文件获取跟目录的办法
- java中继承和多态的理解
- 小Q系列故事——屌丝的逆袭
- Kafka:Configured broker.id 2 doesn't match stored broker.id 0 in meta.properties.
- Codeforces Round #544 (Div. 3) dp + 双指针
- 发邮件、排序、FIFO
- 数据仓库基础(二)ETL
- JavaScript模块化与esl.js
- IOS之TableViewCell重用机制避免重复显示问题