标签:
看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销毁的的时候也会把读取的值销毁。所以读取后马上备份
标签:
原文地址:http://www.cnblogs.com/gaoxing/p/4242942.html