C++之const

const与define的比较

之前在学习C语言的过程中便听说过const要优于define,所以专门去查了一下const的优点,总结如下:
1.define宏是在预编译阶段进行替换,而const修饰的只读变量是在编译的时候确定其值。
2.define宏没有类型,而const修饰的只读变量具有特定的类型。
3.define宏并不会为常量分配内存,而常量可以。
由于存在上述两个特点,编译器对define的变量只是简单进行替换,但是const类型的常量有类型,编译器会进行类型检查所以更安全,更准确。
下面一个例子便可以看出const和define的区别

#include<iostream>
#define a 7+7

int main()
{
    const int b = 7 + 7;
    int c;
    c = a * a;
    std::cout << "define--" << c << "\n";
    c = b * b;
    std::cout << "const--" << c << "\n";
    getchar();
    return 0;
}

const修饰函数参数,函数返回值,作为后缀修饰成员函数

  1. void myfun(const int *i);
    在函数内部任何修改*i的值都是不合法的,const尤其是在传入指针类型变量的时候很好保护原值不被修改。
  2. const int myfun();
    此处返回const值, 意思指返回的原函数里的变量的初值不能被修改, 但是它可以被赋给任何的const或非const类型变量, 完全不需要加上这个const关键字.但这只对于内部类型而言(因为内部类型返回的肯定是一个值, 而不会返回一个变量, 不会作为左值使用), 对于用户自定义类型, 返回值是常量是非常重要的。
  3. void myfun()const;
    在成员函数声明后面加const便限定了,在此成员函数的定义中不能对成员变量进行修改(但是可以访问),不能调用非const类型的成员函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值