C++ const总结

来源:互联网 发布:空军一号 国际歌 知乎 编辑:程序博客网 时间:2024/06/16 09:05

1.const关键字作用

const的作用是将声明对象声明为常量(即不可修改)。

举个简单例子:

const int a = 1;

a = 2  //error,a 不可修改


2.const的用法:

1)const与变量结合

2)const与函数结合

3)const与类结合


1)const与变量结合:

这里要注意的是const与指针结合,const与*的位置不同会代表不同意义。

int a = 1;

const int *ptr1 = &a;  //这个是ptr1指针指向的是常量, 不可(*ptr1)++;

int *const ptr2  = &a; //这个是ptr2指针本身是常量,即不可ptr2++;


2)const与函数结合

与全局函数结合:

const int func1(const int &a){}    //返回类型为一个常量,函数返回值会赋给一个const常量 如 const int a = func1(para);

与成员函数结合:

const int func1(){}   //  表示函数返回类型为常量,const修饰的是返回类型。该函数与普通成员函数一样,可以调用全部数据成员,可以修改数据成员的值;但不能调用const对象的任何成员。

int func() const{}    //  表示常量成员函数

       //对数据成员,没有更改数据成员的值的权限(但能访问全部数据成员); 对类的对象:能访问const 和非const对象全部成员。


3)const与类结合

const Class object1;  //常量对象 ;对于数据成员:常量对象不能更改数据成员的值,但可以调用所有数据成员。

//对于成员函数:常量对象只能调用const常函数,这是最大的区别

注意:常量对象的性质是不能修改对象内任何东西,所以决定了常量成员函数也不能修改数据成员。


总结:

            const对象       非const对象

权限: const成员函数 全部函数

全部数据成员的调用权               全部数据成员的调用权和修改权(非const数据成员)

(没有修改数据成员的权限)


4)常量成员函数可以重载参数一模一样的成员函数:

例:

class test{

int func1() {};   //1

int func1() const {};    //2 这是重载

}

int main(){

test ob;

ob.func1();  //调用func1()

//const test ob;

// ob.func1();  //调用 func1() const;

}

对于这种重载,const对象调用const成员函数,非const对象调用非const 函数

常量成员函数返回的时类型是const,不能修改,非常量成员函数可以返回引用类型,作为左值

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 win10电脑开机密码忘了怎么办 win10的开机密码忘了怎么办 u盘中了exe病毒怎么办 眼睛长个麦粒豆怎么办 苹果手机sdk授权失败怎么办 小米5王者荣耀卡怎么办 华为p9手机电池不耐用怎么办 华为g9青春版耗电快怎么办 华为手机摄像头坏了怎么办 华为p10摄像头玻璃划痕怎么办? 华为g9手机音量小怎么办 华为7pius太卡怎么办 华为畅享7plus卡怎么办 华为p9屏幕进水变颜色怎么办? 玩王者荣耀卡退怎么办 华为手机忘记开机密码怎么办 华为p9密码忘了怎么办 华为p9解锁密码忘了怎么办 华为手机不支持联通4g怎么办 酷派手机自动下载软件怎么办 小米5a不能开机怎么办 华为手机的视频找不到了怎么办 华为p8内存文件打不开怎么办 华为荣耀9网速慢怎么办 荣耀9手机网速慢怎么办 联想台式机不支持xp驱动怎么办 一体机尾插坏了怎么办 华为手机触屏失灵怎么办 华为p8max手机老是卡怎么办 手机屏碎了数据怎么办 华为p9屏碎了怎么办 华为p7一l09卡顿怎么办 华为p7打不开机怎么办 华为8主板坏了怎么办 华为手机主板坏了怎么办 华为p9文字变英文了怎么办 华为p9plus电池不耐用怎么办 华为mate8手机音量小怎么办 同花顺自选股更新不显示怎么办 华为麦芒定频了怎么办 用线刷宝刷机失败开不了机怎么办