const的用法总结

来源:互联网 发布:混沌与秩序2数据库 编辑:程序博客网 时间:2024/06/11 04:37

1. const 用于变量

(1) const位于*左侧,修饰变量,指针所指内容为常量,不允许通过这个指针对内容进行更改,但是a可以指向别处,也可以不通过a改变对象的值。

int b = 500, c = 600;

const int* a = &b;

int const *a = &b;

*a = 600;//错误

a = &c;//正确,指向别处

b = 600;//正确,没有通过a来改变


(2)const位于*右侧,修饰指针,指针为常指针,定义时必须初始化,且其值不能改变,指针所指内容通常不是常量,可以更改。

int* const a ; //错误

int* const a = &b;//正确,定义时必须初始化

cout<< a++ << endl; // 错误,不能改变指针的值

*a = 600; //正确,允许改值


2. const用于类

(1)const修饰成员变量

const修饰类的成员变量,表示成员常量,不能被修改,同时它只能在初始化列表中赋值
    class A
    { 
        …
        const int nValue;         //成员常量不能被修改
        …
        A(int x): nValue(x) { } ; //只能在初始化列表中赋值
     }


(2)const修饰成员函数

const修饰类的成员函数,则该成员函数不能修改类中任何非const成员变量(可以进行读操作,比如返回一个值),也不能调用那些会修改成员变量的普通成员函数(只能调用Const成员函数)

一般写在函数的最后来修饰。
    class A
    { 
        …
       void function()const; //常成员函数, 它不改变对象的成员变量,
也不能调用类中任何非const成员函数。

}

对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。通常会把一个只读函数定义为const类型,提高程序健壮性。

a. const成员函数不被允许修改它所在对象的任何一个数据成员。

b. const成员函数能够访问对象的const成员,而其他成员函数不可以。


(3)const修饰类对象/对象指针/对象引用

a. const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。

b. 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(); 正确

0 0
原创粉丝点击