《程序员面试宝典》C/C++关键字-const

1.1.2const作用
常类型也称为const类型,在C语言中,主要是用于定义变量为常类型以及修饰函数参数和返回值,在C++中还可以修饰函数的定义以及类的成员函数,常类型的变量或对象的值是不能被更新的。Const具有以下几个作用:
(1)定义的const常量,具有不可变性
(2)保护被修饰的量,防止被意外修改,增强了程序的健壮性。

Void f(cons tint i)
{
    I=10;//错误,不能修改
}

(3)节省空间,避免不必要的内存分配,const在运行时只有一份复制品,而define有多份复制品。

#define PI 3.14
Const double Pi = 3.14;//此时将Pi放入只读存储器中
double I=PI;//进行宏替换,分配内存
double J=PI;//再次分配内存
double i=Pi;//此时Pi分配内存,下面就不再分配
double j=Pi;//没有分配内存

(4)修饰常变量时,下面的结果一样

const int value=2;
Int const value=2;

(5)修饰类对象,const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。

class AAA
{
    void func1();
void func2() const;
}
const AAA aObj;//定义常类
aObj.func1(); //错误
aObj.func2(); //正确
const AAA* aObj = new AAA();
aObj->func1(); //错误
aObj->func2(); //正确

(6)修饰成员变量,表示成员常量,不能被修改,同时它只能在初始化列表中赋值

class A
{
   const int nValue;       //成员常量不能被修改
   A(int x): nValue(x) {}; //只能在初始化列表中赋值

}

(7)修饰成员函数,则该成员函数不能修改类中任何非const成员函数。一般写在函数的最后来修饰

class A
{
void function()const; //常成员函数, 它不改变对象的成员变量. 也不能调用类中任何非const成员函数。
}

(8)修饰常指针

const int *A;//const修饰指向的对象,A可变,A指向的内容不可变等于const (int) *A;
int const *A;// const修饰指向的对象,A可变,A指向的内容不可变等于(int) const *A;
int * const A;//const修饰指针A,A不可变,A指向的内容可以变(int *) const A;
const Int * const A;//const修饰指针A,A不可变,A指向的内容可以变const (int *) const A;

(9)修饰常引用,该引用所引用的对象不能被更新,防止修改引用的对象

猜你喜欢

转载自blog.csdn.net/wangshuailpp/article/details/79885645