7.1.2 C++关键字 const

来源:互联网 发布:三毛 知乎 编辑:程序博客网 时间:2024/06/04 17:57

const作用:

1)定义 const常量:const int MAX =100;

2)方便参数调整和修改。

3)保护被修饰的东西。

4)为函数重载提供参考。

5)节省空间,避免不必要的内存分配。const定义的常量在运行时只有一份复制品,#define则有若干个。

6)提高程序的效率,在不需要取地址的时候,即普通的const常量,不分配内存,存入符号表,成为编译期间的常量。

例如:

#include <iostream>


using namespace std;


int main()
{
    const int a=10;
    const int& b=a;


    int *p=const_cast<int*>(&a);
    (*p)++;
    int c=a;
    cout<<a<<' '<<b<<' '<<*p<<' '<<c;
    return 0;
}
//输出为10,11,11,10;

引申1:什么情况下使用const:

1.修饰一般常量,int const a=2,const int a=2均可。

2.修饰常数组。const int a[5]={1,2,3,4,5};

3.修饰常对象:class A; const A a;需要进行初始化,且对象不能被更新。

4.修饰常引用。

5.修饰常指针:const int * const a=&b;

6.修饰函数的常参数。

7.修饰函数的返回值:const int fun();

8.修饰类的成员函数:class A{ int fun()const;} fun不能修改类或者对象的属性。

9.在另一个连接文件中引用const常量:extern const int a;


引申2:什么是常引用:

是为了避免使用变量时,不知情的情况下修改了变量。常引用主要定义了一个普通变量的只读属性别名。

主要用途:1.只读属性别名。 2.函数的形参。

注意:1.如果是对一个常量进行引用,编译器会首先建立一个临时变量,将常量值置入临时变量(个人感觉成为幕后变量更合适),对引用的操作就是对这个临时变量操作。

            2.引用初始化,非const引用只能用同类型非const左值进行初始化,而右值可以初始化const引用,过程为先建立一个临时对象存储右值,再用临时对象初始化const引用

            3.在函数的引用型参数中,能被定义为const尽量定义为const,因为const引用可以用字面值初始化。









0 0
原创粉丝点击