const常量的实现机制以及与宏定义区别

本文探讨了const关键字在C++中的作用,解释了const常量并非真正不可变,而是一种编译期的约束。const常量在不同场景下的行为,如修饰局部变量、指针和类成员变量,以及const与#define的区别,包括类型检查、存储方式和效率。建议在C++编程中优先使用const而非#define。
摘要由CSDN通过智能技术生成

        const关键字的基本思想就是将一个变量变成常量,试图从语言设计者的角度去分析引入该关键字的动机。

通常的理解,const修饰的变量是不可修改的。显然并不是,const关键字在某种程度上来说只是一个面向编译器和程序员的幌子,并不能保证被修饰的内容的不变性。

 

const的部分用法:

  • const修饰局部变量,即声明一个局部常量

g++编辑器

#include <iostream>

using namespace std;

int main()
{
    const int a = 3;
    int *b = (int *)&a;

    *b = 5;
    cout << a << " , " << *b << endl;

    return 0;
}

运行结果:
3 , 5

        片面的理解,const确实很负责的保证了被修饰内容的不变性,在一定程度上使得con_var1变成了一个常量。但是,并没有实现保证con_var1在内存中的值不被修改。

gcc编辑器

int main()
{
    const int a1 = 3;
    int *b1 = (int *)&a1;

    *b1 = 5;
    printf("a = %d, *b1 = %d\n", a, *b1);

    return 0;
}

运行结果:
a1 = 5, *b1 = 5
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值