const的用法总结

const在C/C++中有很多的用法,现将const的用法做如下总结。

1、const修饰变量

const修饰变量,可以使变量具有常属性,也就是该变量在以后的使用中其值都不能进行改变。

const a=10;
a = 20;//错误,不能修改

在这里要注意的一点就是const修饰的变量要进行初始化。

2、const和指针

用const修饰指针有以下几种情况

int const* p;//指针p本身可以修改,但是p指向的内容不可以修改
const int* p;//指针p本身可以修改,但是p指向的内容不可以修改

int *const p;//指针p本身不能修改,但是p指向的内容可以被修改

int const *const p;//指针p本身和p指向的内容都不可以修改
const int *const p;//指针p本身和p指向的内容都不可以修改
3、保护函数参数不被改变

用const修身函数的参数,可以保证该参数的值在函数内部不被改变。
但是一般const修饰的参数都有哪些呢?
一般用引用或者传地址的方式给函数传递一个参数,如果在函数体内对该参数进行修改,那么就会连实参的值一并进行修改。

4、const修饰函数返回值

const修饰函数的返回值,防止函数的返回值被修改

const int fun()
{}

但是这里要注意的是,必须也用const修饰的变量来接收这个函数的返回值。

5、const修饰类成员函数

const可以修饰类成员函数,防止类成员函数中除了static成员之外的其他成员被修改。

class T
{
public:
    void fun()const
    {
        a = 20;//错误,不可以修改非static的值
        b = 10;
    }
private:
    int a;
    static int b;
};
6、const修饰类的成员变量

类的成员变量可以分为静态的和非静态的,如果const修饰的是静态的成员变量,可以在构造函数中对该变量进行初始化;如果const修饰的是静态的成员变量,则需要在类外对该变量进行初始化。

class T
{
public:
    T():
        a(10)
    {}
private:
    const int a;
    static const int b;
};

const int T::b = 20;
7、const和#define的区别

#define A 10
const int A=10;
上面两条语句的作用是一样的,但是后面一条语句可以节省内存空间,这是为什么呢?
原因在于在程序中多次使用const类型的变量,只会在第一次分配内存,但是如果使用#define定义的宏,则每次都会分配内存,这样看来使用const会节省很多空间。

8、const和extern

file1.cpp中, const int a;
file2.cpp中, extern int a; //错误,无法调用,
说明const修饰大的变量只能在该程序的本文件中使用,不能在该程序的其他文件中使用。
要想const定义的对象变量能被其他文件调用,定义时必须使用extern修饰为
extern const int val;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值