c++ const 和 define

const :

1.用于常量, const修饰的类型为TYPE的变量value是不可变的

const TYPE ValueName = value;  const int a = 1;

2.常量指针和指针常量 见

c++之指针常量和常量指针_小飞侠hello的博客-CSDN博客_c++常量指针参数

3.常量引用 见:C++ 常量引用用法_小飞侠hello的博客-CSDN博客 

4.成员函数   const修饰类的成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰。
class A
{

void function()const; //常成员函数, 它不改变对象的成员变量.

其他:可以使用const_cast<> 的方式去掉const.

见:c++ 4种新型的类型static_cast、dynamic_cast、reinterpret_cast、const_cast转换运算符_小飞侠hello的博客-CSDN博客

#define
预处理器指令

作用:

1.代替全局常量   #define WINDOW_WIDTH 1920

2.宏函数    #define SQUARE(x) x*x   算不上是函数,因为它所做是文本替换  用反斜杠“\”来告诉程序我们这一行还没有结束,要将下一行的内容并入这一行,缺点是不能有返回值

3.在宏函数里,当#加在一个参数的前面,它会被自动转换为那个给予的参数名的字符串

#define PRINTOUT_VALUE(var) std::cout<<"The value of "<<#var<<" is: "<<var<<std::endl;

4。##"用于在宏定义中连接两个标识符。常常用于生成一系列结构化相同代码

5.防止代码被编译   #ifdef,#ifndef,#else,和 #endif

const  和#define 的区别

1.编译器处理方式不同:#define 是预处理阶段,const 是编译阶段。

2.类型安全检查不同:#define 不做类型检查,const 有具体的类型,在编译会执行检查。

3.存储方式不同:#define 不会分配内存,存储在代码段,const 会分配内存,存储在常量区

4.作用域不同:const有作用域的概念,函数内部定义的const变量只能在函数内部使用。而define没有作用域的概念(除非使用ifdef配合),一个函数内定义的宏定义变量可以在另外一个函数中使用

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值