c++中的const关键字的理解

看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销毁的的时候也会把读取的值销毁。所以读取后马上备份

时间: 2025-01-01 23:35:13

c++中的const关键字的理解的相关文章

C++ 类中的const关键字

//类中的const关键字 #include<iostream> using namespace std; class Point{ public: //这个const关键字本质上修饰的是this指针 int GetX() const //====>int GetX(const this) { //因为this被隐藏,所以const关键字只好写在函数后面 //x++; //加上const关键字 报错 error C3490: 由于正在通过常量对象访问“x”,因此无法对其进行修改 //这个

详解C和C++中的const关键字

在讲下面的内容之前,要先看看这篇文章const.static变量的存储位置 一.C中的const 作用:(1)可以定义const常量,具有不可变性. (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改. 同宏定义一样,可以做到不变则已,一变都变! (4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. 还是上面的例子,如果在函数体内修改了i,编译器就会报错: (5) 可以节省空间,避免不必要的内存

C++中关于const关键字的使用

const关键字用于表示变量或函数, 亦或其他类型的数据其值或其本身的值禁止被修改. 但需要注意的是, 即使被修饰为const类型的变量, 其本质依旧是个变量, 而不是常量. 也许你会说, 这有什么区别呢? 我在代码中感觉不出差别啊. 其实它们的差别在于编译器的编译. 对于编译器来说, 变量意味着需要分配内存空间, 而常量只是在编译期间记录在编译器的一张内存表里面的一个证整数而已.  变量的值必须初始化, 除非使用extern修饰它, 这就告诉编译器该变量是一个全局const变量, 在哪里定义编

C++ 中的const关键字

为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量:  const Type 变量名 或  Type const 变量名 //两者等同, 如: const int a=5; 与 int const a=5; 等同 常引用:  const Type &引用名 常对象:  Type const 对象名 常成员函数:  类名::fu

C++中的const关键字的用法

1.const用于修饰普通变量,表示常量,不建议修改,某种程度上不允许修改(其实也是可以修改的) 指针常量 :指针(指向的变量的值)自身是一个常量,说明不能改变自身的指向  int* const p=&a;  常量指针 :指向常量的指针,指针可以修改指向 但是不能修改指向的变量的值  const int* p;面试必杀技: const出现在*的左边    是常量指针 const int num = 19; const int * p = &num;//指向常量的指针 常见的面试题中,经常会

C++中const关键字的使用总结

C++中使用const关键字来修饰常量,下面从两个方面总结:变量和成员函数. 变量:const可以修饰普通变量.指针(数组)和结构体. 1.const修饰普通变量是最简单的情形.这样的用法多为在程序中创建一个只读变量,类似于C语言的#define宏定义,但const声明的变量可以指定类型,因此在C++中提倡使用const关键字声明只读变量. const int Month = 12; /* 示例代码 1 */ 示例代码1表示:定义了一个int型变量Month,程序可以使用该变量,但不可对Mont

const关键字到底该怎么用

前言 我们都知道使用const关键字限定一个变量为只读,但它是真正意义上的只读吗?实际中又该如何使用const关键字?在解答这些问题之前,我们需要先理解const关键字的基本使用.本文说明C中的const关键字,不包括C++. 基本介绍 const是constant的简写,是不变的意思.但并不是说它修饰常量,而是说它限定一个变量为只读. 修饰普通变量 例如: const int NUM = 10; //与int const NUM等价NUM = 9;  //编译错误,不可再次修改 由于使用了co

【3】学习C++之const关键字的使用

在C++中,const关键字是控制变量是否可以变化的,是否能够用好const关键字是区别小白和大佬的重要指标(大雾). 1.const与基本数据类型 int a = 10; //a是变量,a的值可以在后续操作中进行更改. const int b = 10;//b是常量,b的值不能进行更改,进行更改操作会报错. 2.const与指针类型 以下两种写法是等价的: int const a = 10; const int a = 10; 以下两种写法还是等价的: const int *const a =

c++ const关键字

通常,不用const来区别数据的类型,在声明过程中,const关键字起到的是修饰限定的作用. 1 符号常量(通常,在赋初值后,其值不能改变:而常量在定义时必须赋初值) int i; const int k = 3; //标识符k代表的内存单元中存放的int型的数据,关键字const限定,不能通过该标识符k来修改所代表的内存单元中的int值 i和k代表的内存单元存放的都是int型数据,只是const限定的k为常量:符号常量,在声明时必须赋初值,赋初值后其值不能改变 下面尝试通过声明一个指针变量t引